break;
default:
ftepp_error(ftepp, "expected macro name");
- return false;
+ goto cleanup_false;
}
(void)ftepp_next(ftepp);
if (ftepp->token == '(') {
macro->has_params = true;
if (!ftepp_define_params(ftepp, macro))
- return false;
+ goto cleanup_false;
}
if (!ftepp_skipspace(ftepp))
- return false;
+ goto cleanup_false;
if (!ftepp_define_body(ftepp, macro))
- return false;
+ goto cleanup_false;
if (ftepp->output_on)
vec_push(ftepp->macros, macro);
for (; l < ftepp_ctx(ftepp).line; ++l)
ftepp_out(ftepp, "\n", true);
return true;
+
+cleanup_false:
+ ppmacro_delete(macro);
+ return false;
}
/**
def.offset++;
component[len-1]++;
}
+
+ mem_d(component);
}
static void gen_vector_fields(prog_section_field fld, const char *name)
fld.offset++;
component[len-1]++;
}
+
+ mem_d(component);
}
static bool ir_builder_gen_global(ir_builder *self, ir_value *global, bool islocal)