Start using CFCUtil_sprintf
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/e9641a06 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/e9641a06 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/e9641a06 Branch: refs/heads/master Commit: e9641a06c485bcbe4843329a9326414a6b9c8c79 Parents: 2f96f72 Author: Nick Wellnhofer <[email protected]> Authored: Wed Dec 26 21:22:30 2012 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Fri Dec 28 22:23:10 2012 +0100 ---------------------------------------------------------------------- clownfish/compiler/src/CFCBindClass.c | 73 +++---------- clownfish/compiler/src/CFCBindCore.c | 32 +---- clownfish/compiler/src/CFCBindFile.c | 14 +-- clownfish/compiler/src/CFCBindFunction.c | 11 +-- clownfish/compiler/src/CFCBindMethod.c | 96 ++++------------ clownfish/compiler/src/CFCClass.c | 16 +-- clownfish/compiler/src/CFCDumpable.c | 44 ++------ clownfish/compiler/src/CFCFile.c | 8 +- clownfish/compiler/src/CFCMethod.c | 7 +- clownfish/compiler/src/CFCPerl.c | 61 +++-------- clownfish/compiler/src/CFCPerlClass.c | 17 +--- clownfish/compiler/src/CFCPerlConstructor.c | 15 +-- clownfish/compiler/src/CFCPerlMethod.c | 133 +++++---------------- clownfish/compiler/src/CFCPerlSub.c | 23 +--- clownfish/compiler/src/CFCPerlTypeMap.c | 64 +++++------ clownfish/compiler/src/CFCUtil.c | 18 +-- clownfish/compiler/src/CFCVariable.c | 13 +-- 17 files changed, 168 insertions(+), 477 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindClass.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCBindClass.c b/clownfish/compiler/src/CFCBindClass.c index 52aa5a5..50d9141 100644 --- a/clownfish/compiler/src/CFCBindClass.c +++ b/clownfish/compiler/src/CFCBindClass.c @@ -96,10 +96,8 @@ CFCBindClass_init(CFCBindClass *self, CFCClass *client) { const char *full_vtable_var = CFCClass_full_vtable_var(client); const char *PREFIX = CFCClass_get_PREFIX(client); - self->method_specs_var = (char*)MALLOCATE(strlen(full_vtable_var) + 20); - self->short_names_macro = (char*)MALLOCATE(strlen(PREFIX) + 20); - sprintf(self->method_specs_var, "%s_METHODS", full_vtable_var); - sprintf(self->short_names_macro, "%sUSE_SHORT_NAMES", PREFIX); + self->method_specs_var = CFCUtil_sprintf("%s_METHODS", full_vtable_var); + self->short_names_macro = CFCUtil_sprintf("%sUSE_SHORT_NAMES", PREFIX); return self; } @@ -156,14 +154,8 @@ S_to_c_header_inert(CFCBindClass *self) { "\n" "%s\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(inert_var_defs) - + strlen(inert_func_decs) - + strlen(short_names) - + 50; - char *content = (char*)MALLOCATE(size); - sprintf(content, pattern, inert_var_defs, inert_func_decs, short_names); + char *content = CFCUtil_sprintf(pattern, inert_var_defs, inert_func_decs, + short_names); FREEMEM(inert_var_defs); FREEMEM(inert_func_decs); @@ -234,25 +226,11 @@ S_to_c_header_dynamic(CFCBindClass *self) { "\n" "%s\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(parent_include) - + strlen(privacy_symbol) - + strlen(struct_def) - + strlen(privacy_symbol) - + strlen(inert_var_defs) - + strlen(sub_declarations) - + strlen(method_typedefs) - + strlen(method_defs) - + strlen(visibility) - + strlen(vt_var) - + strlen(short_names) - + 100; - - char *content = (char*)MALLOCATE(size); - sprintf(content, pattern, parent_include, privacy_symbol, struct_def, - privacy_symbol, inert_var_defs, sub_declarations, method_typedefs, - method_defs, visibility, vt_var, short_names); + char *content + = CFCUtil_sprintf(pattern, parent_include, privacy_symbol, + struct_def, privacy_symbol, inert_var_defs, + sub_declarations, method_typedefs, method_defs, + visibility, vt_var, short_names); FREEMEM(struct_def); FREEMEM(parent_include); @@ -368,15 +346,8 @@ CFCBindClass_to_c_data(CFCBindClass *self) { "\n" "%s\n" "\n"; - size_t size = sizeof(pattern) - + strlen(offsets) - + strlen(cb_funcs) - + strlen(ms_var) - + strlen(vt_var) - + strlen(autocode) - + 100; - char *code = (char*)MALLOCATE(size); - sprintf(code, pattern, offsets, cb_funcs, ms_var, vt_var, autocode); + char *code = CFCUtil_sprintf(pattern, offsets, cb_funcs, ms_var, vt_var, + autocode); FREEMEM(fresh_methods); FREEMEM(offsets); @@ -401,12 +372,7 @@ S_struct_definition(CFCBindClass *self) { } char pattern[] = "struct %s {%s\n};\n"; - size_t size = sizeof(pattern) - + strlen(struct_sym) - + strlen(member_decs) - + 10; - char *struct_def = (char*)MALLOCATE(size); - sprintf(struct_def, pattern, struct_sym, member_decs); + char *struct_def = CFCUtil_sprintf(pattern, struct_sym, member_decs); FREEMEM(member_decs); return struct_def; @@ -454,19 +420,8 @@ CFCBindClass_spec_def(CFCBindClass *self) { " %d, /* num_novel */\n" " %s /* method_specs */\n" " }"; - - size_t size = sizeof(pattern) - + strlen(vt_var) - + strlen(parent_ref) - + strlen(class_name) - + strlen(struct_sym) - + 10 // for num_fresh - + 10 // for num_novel - + strlen(ms_var) - + 100; - char *code = (char*)MALLOCATE(size); - sprintf(code, pattern, vt_var, parent_ref, class_name, struct_sym, - num_fresh, num_novel, ms_var); + char *code = CFCUtil_sprintf(pattern, vt_var, parent_ref, class_name, + struct_sym, num_fresh, num_novel, ms_var); FREEMEM(parent_ref); return code; http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindCore.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCBindCore.c b/clownfish/compiler/src/CFCBindCore.c index 0cf7e30..903f429 100644 --- a/clownfish/compiler/src/CFCBindCore.c +++ b/clownfish/compiler/src/CFCBindCore.c @@ -249,17 +249,9 @@ S_write_parcel_h(CFCBindCore *self) { "\n" "%s\n" "\n"; - size_t size = sizeof(pattern) - + strlen(self->header) - + strlen(aliases) - + strlen(typedefs) - + strlen(visibility) - + 2 * strlen(prefix) - + strlen(self->footer) - + 100; - char *file_content = (char*)MALLOCATE(size); - sprintf(file_content, pattern, self->header, aliases, typedefs, visibility, - prefix, prefix, self->footer); + char *file_content + = CFCUtil_sprintf(pattern, self->header, aliases, typedefs, visibility, + prefix, prefix, self->footer); // Unlink then write file. const char *inc_dest = CFCHierarchy_get_include_dest(hierarchy); @@ -348,20 +340,10 @@ S_write_parcel_c(CFCBindCore *self) { "}\n" "\n" "%s\n"; - size_t size = sizeof(pattern) - + strlen(self->header) - + strlen(privacy_syms) - + strlen(includes) - + strlen(c_data) - + strlen(vt_specs) - + strlen(prefix) - + 10 // for num_specs - + strlen(prefix) - + strlen(self->footer) - + 100; - char *file_content = (char*)MALLOCATE(size); - sprintf(file_content, pattern, self->header, privacy_syms, includes, - c_data, vt_specs, prefix, num_specs, prefix, self->footer); + char *file_content + = CFCUtil_sprintf(pattern, self->header, privacy_syms, includes, + c_data, vt_specs, prefix, num_specs, prefix, + self->footer); // Unlink then open file. const char *src_dest = CFCHierarchy_get_source_dest(hierarchy); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindFile.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCBindFile.c b/clownfish/compiler/src/CFCBindFile.c index db4c175..914c1f5 100644 --- a/clownfish/compiler/src/CFCBindFile.c +++ b/clownfish/compiler/src/CFCBindFile.c @@ -101,17 +101,9 @@ CFCBindFile_write_h(CFCFile *file, const char *dest, const char *header, "\n" "%s\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(header) - + strlen(include_guard_start) - + strlen(content) - + strlen(include_guard_close) - + strlen(footer) - + 50; - char *file_content = (char*)MALLOCATE(size); - sprintf(file_content, pattern, header, include_guard_start, content, - include_guard_close, footer); + char *file_content + = CFCUtil_sprintf(pattern, header, include_guard_start, content, + include_guard_close, footer); // Unlink then write file. remove(h_path); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindFunction.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCBindFunction.c b/clownfish/compiler/src/CFCBindFunction.c index 0f3cb46..2e3ea00 100644 --- a/clownfish/compiler/src/CFCBindFunction.c +++ b/clownfish/compiler/src/CFCBindFunction.c @@ -32,15 +32,8 @@ CFCBindFunc_func_declaration(CFCFunction *func) { const char *inline_prop = CFCFunction_inline(func) ? "static CHY_INLINE " : ""; - size_t size = strlen(inline_prop) - + strlen(ret_type_str) - + strlen(full_func_sym) - + strlen(param_list_str) - + 20 - + strlen("\0"); - char *buf = (char*)MALLOCATE(size); - sprintf(buf, "%s%s\n%s(%s);", inline_prop, ret_type_str, full_func_sym, - param_list_str); + char *buf = CFCUtil_sprintf("%s%s\n%s(%s);", inline_prop, ret_type_str, + full_func_sym, param_list_str); return buf; } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindMethod.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCBindMethod.c b/clownfish/compiler/src/CFCBindMethod.c index 85ac99e..c9ee631 100644 --- a/clownfish/compiler/src/CFCBindMethod.c +++ b/clownfish/compiler/src/CFCBindMethod.c @@ -75,18 +75,13 @@ S_final_method_def(CFCMethod *method, CFCClass *klass) { char *full_offset_sym = (char*)MALLOCATE(offset_sym_size); CFCMethod_full_offset_sym(method, klass, full_offset_sym, offset_sym_size); - const char pattern[] = "extern size_t %s;\n#define %s(%s) \\\n %s((%s)%s)\n"; - size_t size = sizeof(pattern) - + strlen(full_offset_sym) - + strlen(full_meth_sym) - + strlen(arg_names) - + strlen(full_func_sym) - + strlen(self_type) - + strlen(arg_names) - + 20; - char *method_def = (char*)MALLOCATE(size); - sprintf(method_def, pattern, full_offset_sym, full_meth_sym, arg_names, - full_func_sym, self_type, arg_names); + const char pattern[] = + "extern size_t %s;\n" + "#define %s(%s) \\\n" + " %s((%s)%s)\n"; + char *method_def + = CFCUtil_sprintf(pattern, full_offset_sym, full_meth_sym, arg_names, + full_func_sym, self_type, arg_names); FREEMEM(full_offset_sym); FREEMEM(full_meth_sym); @@ -139,26 +134,12 @@ S_virtual_method_def(CFCMethod *method, CFCClass *klass) { " const %s method = *((%s*)method_address);\n" " %smethod((%s*)self%s);\n" "}\n"; - - size_t size = sizeof(pattern) - + strlen(visibility) - + strlen(full_offset_sym) - + strlen(ret_type_str) - + strlen(full_meth_sym) - + strlen(invoker_struct) - + strlen(params_minus_invoker) - + strlen(full_offset_sym) - + strlen(full_typedef) - + strlen(full_typedef) - + strlen(maybe_return) - + strlen(common_struct) - + strlen(arg_names_minus_invoker) - + 40; - char *method_def = (char*)MALLOCATE(size); - sprintf(method_def, pattern, visibility, full_offset_sym, ret_type_str, - full_meth_sym, invoker_struct, params_minus_invoker, - full_offset_sym, full_typedef, full_typedef, maybe_return, - common_struct, arg_names_minus_invoker); + char *method_def + = CFCUtil_sprintf(pattern, visibility, full_offset_sym, ret_type_str, + full_meth_sym, invoker_struct, params_minus_invoker, + full_offset_sym, full_typedef, full_typedef, + maybe_return, common_struct, + arg_names_minus_invoker); FREEMEM(full_offset_sym); FREEMEM(full_meth_sym); @@ -175,13 +156,8 @@ CFCBindMeth_typedef_dec(struct CFCMethod *method, CFCClass *klass) { char *full_typedef = (char*)MALLOCATE(full_typedef_size); CFCMethod_full_typedef(method, klass, full_typedef, full_typedef_size); - size_t size = strlen(params) - + strlen(ret_type) - + strlen(full_typedef) - + 20 - + sizeof("\0"); - char *buf = (char*)MALLOCATE(size); - sprintf(buf, "typedef %s\n(*%s)(%s);\n", ret_type, full_typedef, params); + char *buf = CFCUtil_sprintf("typedef %s\n(*%s)(%s);\n", ret_type, + full_typedef, params); FREEMEM(full_typedef); return buf; } @@ -209,16 +185,9 @@ CFCBindMeth_spec_def(CFCMethod *method) { " (cfish_method_t)%s, /* callback_func */\n" " &%s /* offset */\n" " }"; - size_t size = sizeof(pattern) - + 10 /* for is_novel */ - + strlen(macro_sym) - + strlen(impl_sym) - + strlen(full_override_sym) - + strlen(full_offset_sym) - + 30; - char *def = (char*)MALLOCATE(size); - sprintf(def, pattern, is_novel, macro_sym, impl_sym, full_override_sym, - full_offset_sym); + char *def + = CFCUtil_sprintf(pattern, is_novel, macro_sym, impl_sym, + full_override_sym, full_offset_sym); FREEMEM(full_offset_sym); return def; @@ -248,9 +217,8 @@ S_maybe_unreachable(CFCType *return_type) { } else { const char *ret_type_str = CFCType_to_c(return_type); - return_statement = (char*)MALLOCATE(strlen(ret_type_str) + 60); - sprintf(return_statement, "\n CHY_UNREACHABLE_RETURN(%s);", - ret_type_str); + char pattern[] = "\n CHY_UNREACHABLE_RETURN(%s);"; + return_statement = CFCUtil_sprintf(pattern, ret_type_str); } return return_statement; } @@ -277,18 +245,9 @@ CFCBindMeth_abstract_method_def(CFCMethod *method) { " cfish_CharBuf *klass = self ? Cfish_Obj_Get_Class_Name((cfish_Obj*)self) : %s->name;%s\n" " CFISH_THROW(CFISH_ERR, \"Abstract method '%s' not defined by %%o\", klass);%s\n" "}\n"; - size_t needed = sizeof(pattern) - + strlen(ret_type_str) - + strlen(full_func_sym) - + strlen(params) - + strlen(vtable_var) - + strlen(unused) - + strlen(macro_sym) - + strlen(return_statement) - + 50; - char *abstract_def = (char*)MALLOCATE(needed); - sprintf(abstract_def, pattern, ret_type_str, full_func_sym, params, - vtable_var, unused, macro_sym, return_statement); + char *abstract_def + = CFCUtil_sprintf(pattern, ret_type_str, full_func_sym, params, + vtable_var, unused, macro_sym, return_statement); FREEMEM(unused); FREEMEM(return_statement); @@ -305,13 +264,8 @@ CFCBindMeth_callback_dec(CFCMethod *method) { char pattern[] = "%s\n" "%s(%s);\n"; - size_t size = sizeof(pattern) - + strlen(ret_type_str) - + strlen(override_sym) - + strlen(params); - - char *callback_dec = (char*)MALLOCATE(size); - sprintf(callback_dec, pattern, ret_type_str, override_sym, params); + char *callback_dec + = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params); return callback_dec; } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCClass.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCClass.c b/clownfish/compiler/src/CFCClass.c index 05e200c..09ffa68 100644 --- a/clownfish/compiler/src/CFCClass.c +++ b/clownfish/compiler/src/CFCClass.c @@ -160,30 +160,26 @@ CFCClass_do_create(CFCClass *self, struct CFCParcel *parcel, ? CFCUtil_strdup(last_colon + 1) : CFCUtil_strdup(class_name); const char *prefix = CFCClass_get_prefix(self); - size_t prefix_len = strlen(prefix); size_t struct_sym_len = strlen(self->struct_sym); - self->short_vtable_var = (char*)MALLOCATE(struct_sym_len + 1); - self->full_struct_sym = (char*)MALLOCATE(prefix_len + struct_sym_len + 1); - self->full_vtable_var = (char*)MALLOCATE(prefix_len + struct_sym_len + 1); - self->privacy_symbol = (char*)MALLOCATE(prefix_len + struct_sym_len + 2 + 1); + self->short_vtable_var = (char*)MALLOCATE(struct_sym_len + 1); size_t i; for (i = 0; i < struct_sym_len; i++) { self->short_vtable_var[i] = toupper(self->struct_sym[i]); } self->short_vtable_var[struct_sym_len] = '\0'; - sprintf(self->full_struct_sym, "%s%s", prefix, self->struct_sym); + self->full_struct_sym = CFCUtil_sprintf("%s%s", prefix, self->struct_sym); + size_t full_struct_sym_len = strlen(self->full_struct_sym); + self->full_vtable_var = (char*)MALLOCATE(full_struct_sym_len + 1); for (i = 0; self->full_struct_sym[i] != '\0'; i++) { self->full_vtable_var[i] = toupper(self->full_struct_sym[i]); } self->full_vtable_var[i] = '\0'; - sprintf(self->privacy_symbol, "C_%s", self->full_vtable_var); + self->privacy_symbol = CFCUtil_sprintf("C_%s", self->full_vtable_var); // Build the relative path to the autogenerated C header file. if (file_spec) { const char *path_part = CFCFileSpec_get_path_part(self->file_spec); - size_t path_part_len = strlen(path_part); - self->include_h = (char*)MALLOCATE(path_part_len + 3); - sprintf(self->include_h, "%s.h", path_part); + self->include_h = CFCUtil_sprintf("%s.h", path_part); } else { self->include_h = CFCUtil_strdup("class.h"); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCDumpable.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCDumpable.c b/clownfish/compiler/src/CFCDumpable.c index 2bdd076..feec89b 100644 --- a/clownfish/compiler/src/CFCDumpable.c +++ b/clownfish/compiler/src/CFCDumpable.c @@ -180,16 +180,9 @@ S_add_dump_method(CFCClass *klass) { "{\n" " %s super_dump = SUPER_METHOD_PTR(%s, %s);\n" " cfish_Hash *dump = (cfish_Hash*)super_dump(self);\n"; - size_t amount = sizeof(pattern) - + strlen(full_func_sym) - + strlen(full_struct) - + strlen(full_typedef) - + strlen(vtable_var) - + strlen(full_meth) - + 50; - char *autocode = (char*)MALLOCATE(amount); - sprintf(autocode, pattern, full_func_sym, full_struct, full_typedef, - vtable_var, full_meth); + char *autocode + = CFCUtil_sprintf(pattern, full_func_sym, full_struct, + full_typedef, vtable_var, full_meth); CFCClass_append_autocode(klass, autocode); FREEMEM(full_meth); FREEMEM(full_typedef); @@ -209,12 +202,7 @@ S_add_dump_method(CFCClass *klass) { " cfish_Hash *dump = cfish_Hash_new(0);\n" " Cfish_Hash_Store_Str(dump, \"_class\", 6,\n" " (cfish_Obj*)Cfish_CB_Clone(Cfish_Obj_Get_Class_Name((cfish_Obj*)self)));\n"; - size_t amount = sizeof(pattern) - + strlen(full_func_sym) - + strlen(full_struct) - + 50; - char *autocode = (char*)MALLOCATE(amount); - sprintf(autocode, pattern, full_func_sym, full_struct); + char *autocode = CFCUtil_sprintf(pattern, full_func_sym, full_struct); CFCClass_append_autocode(klass, autocode); FREEMEM(autocode); CFCVariable **members = CFCClass_member_vars(klass); @@ -254,16 +242,10 @@ S_add_load_method(CFCClass *klass) { " cfish_Hash *source = (cfish_Hash*)CFISH_CERTIFY(dump, CFISH_HASH);\n" " %s super_load = SUPER_METHOD_PTR(%s, %s);\n" " %s *loaded = (%s*)super_load(self, dump);\n"; - size_t amount = sizeof(pattern) - + strlen(full_func_sym) - + strlen(full_struct) * 3 - + strlen(full_typedef) - + strlen(vtable_var) - + strlen(full_meth) - + 50; - char *autocode = (char*)MALLOCATE(amount); - sprintf(autocode, pattern, full_func_sym, full_struct, full_typedef, - vtable_var, full_meth, full_struct, full_struct); + char *autocode + = CFCUtil_sprintf(pattern, full_func_sym, full_struct, + full_typedef, vtable_var, full_meth, full_struct, + full_struct); CFCClass_append_autocode(klass, autocode); FREEMEM(full_meth); FREEMEM(full_typedef); @@ -286,13 +268,9 @@ S_add_load_method(CFCClass *klass) { " cfish_VTable *vtable = cfish_VTable_singleton(class_name, NULL);\n" " %s *loaded = (%s*)Cfish_VTable_Make_Obj(vtable);\n" " CHY_UNUSED_VAR(self);\n"; - size_t amount = sizeof(pattern) - + strlen(full_func_sym) - + strlen(full_struct) * 3 - + 50; - char *autocode = (char*)MALLOCATE(amount); - sprintf(autocode, pattern, full_func_sym, full_struct, full_struct, - full_struct); + char *autocode + = CFCUtil_sprintf(pattern, full_func_sym, full_struct, full_struct, + full_struct); CFCClass_append_autocode(klass, autocode); FREEMEM(autocode); CFCVariable **members = CFCClass_member_vars(klass); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCFile.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCFile.c b/clownfish/compiler/src/CFCFile.c index badfec6..6e827d5 100644 --- a/clownfish/compiler/src/CFCFile.c +++ b/clownfish/compiler/src/CFCFile.c @@ -67,8 +67,6 @@ CFCFile_init(CFCFile *self, CFCFileSpec *spec) { const char *path_part = CFCFileSpec_get_path_part(self->spec); size_t len = strlen(path_part); self->guard_name = (char*)MALLOCATE(len + sizeof("H_") + 1); - self->guard_start = (char*)MALLOCATE(len * 2 + 40); - self->guard_close = (char*)MALLOCATE(len + 20); memcpy(self->guard_name, "H_", 2); size_t i, j; for (i = 0, j = 2; i < len; i++) { @@ -81,9 +79,9 @@ CFCFile_init(CFCFile *self, CFCFileSpec *spec) { } } self->guard_name[j] = '\0'; - sprintf(self->guard_start, "#ifndef %s\n#define %s 1\n", self->guard_name, - self->guard_name); - sprintf(self->guard_close, "#endif /* %s */\n", self->guard_name); + self->guard_start = CFCUtil_sprintf("#ifndef %s\n#define %s 1\n", + self->guard_name, self->guard_name); + self->guard_close = CFCUtil_sprintf("#endif /* %s */\n", self->guard_name); return self; } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCMethod.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCMethod.c b/clownfish/compiler/src/CFCMethod.c index 6ed8f6e..329b109 100644 --- a/clownfish/compiler/src/CFCMethod.c +++ b/clownfish/compiler/src/CFCMethod.c @@ -113,8 +113,7 @@ CFCMethod_init(CFCMethod *self, CFCParcel *parcel, const char *exposure, const char *prefix = CFCMethod_get_prefix(self); const char *last_colon = strrchr(class_name, ':'); const char *struct_sym = last_colon ? last_colon + 1 : class_name; - char *wanted = (char*)MALLOCATE(strlen(prefix) + strlen(struct_sym) + 1); - sprintf(wanted, "%s%s", prefix, struct_sym); + char *wanted = CFCUtil_sprintf("%s%s", prefix, struct_sym); int mismatch = strcmp(wanted, specifier); FREEMEM(wanted); if (mismatch) { @@ -128,9 +127,7 @@ CFCMethod_init(CFCMethod *self, CFCParcel *parcel, const char *exposure, // Derive more symbols. const char *full_func_sym = CFCMethod_implementing_func_sym(self); - size_t amount = strlen(full_func_sym) + sizeof("_OVERRIDE") + 1; - self->full_override_sym = (char*)MALLOCATE(amount); - sprintf(self->full_override_sym, "%s_OVERRIDE", full_func_sym); + self->full_override_sym = CFCUtil_sprintf("%s_OVERRIDE", full_func_sym); // Assume that this method is novel until we discover when applying // inheritance that it overrides another. http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerl.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerl.c b/clownfish/compiler/src/CFCPerl.c index dd5c378..dd6d667 100644 --- a/clownfish/compiler/src/CFCPerl.c +++ b/clownfish/compiler/src/CFCPerl.c @@ -214,18 +214,9 @@ S_write_boot_h(CFCPerl *self) { "#endif /* %s */\n" "\n" "%s\n"; - - size_t size = sizeof(pattern) - + strlen(self->header) - + strlen(guard) - + strlen(guard) - + strlen(self->boot_func) - + strlen(guard) - + strlen(self->footer) - + 20; - char *content = (char*)MALLOCATE(size); - sprintf(content, pattern, self->header, guard, guard, self->boot_func, - guard, self->footer); + char *content + = CFCUtil_sprintf(pattern, self->header, guard, guard, self->boot_func, + guard, self->footer); CFCUtil_write_file(self->boot_h_path, content, strlen(content)); FREEMEM(content); @@ -266,16 +257,9 @@ S_write_boot_c(CFCPerl *self) { " Cfish_ZCB_Assign_Str(alias, \"%s\", %u);\n" " cfish_VTable_add_alias_to_registry(%s,\n" " (cfish_CharBuf*)alias);\n"; - - size_t new_size = sizeof(pattern) - + strlen(alias_adds) - + alias_len - + 20 // stringified alias_len - + strlen(vtable_var) - + 50; - char *new_alias_adds = (char*)MALLOCATE(new_size); - sprintf(new_alias_adds, pattern, alias_adds, alias, - (unsigned)alias_len, vtable_var); + char *new_alias_adds + = CFCUtil_sprintf(pattern, alias_adds, alias, + (unsigned)alias_len, vtable_var); FREEMEM(alias_adds); alias_adds = new_alias_adds; } @@ -319,20 +303,10 @@ S_write_boot_c(CFCPerl *self) { "\n" "%s\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(self->header) - + strlen(self->boot_h_file) - + strlen(pound_includes) - + strlen(self->boot_func) - + strlen(prefix) - + strlen(alias_adds) - + strlen(isa_pushes) - + strlen(self->footer) - + 100; - char *content = (char*)MALLOCATE(size); - sprintf(content, pattern, self->header, self->boot_h_file, pound_includes, - self->boot_func, prefix, alias_adds, isa_pushes, self->footer); + char *content + = CFCUtil_sprintf(pattern, self->header, self->boot_h_file, + pound_includes, self->boot_func, prefix, alias_adds, + isa_pushes, self->footer); CFCUtil_write_file(self->boot_c_path, content, strlen(content)); FREEMEM(content); @@ -392,17 +366,10 @@ S_xs_file_contents(CFCPerl *self, const char *generated_xs, "\n" "%s\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(self->boot_h_file) - + strlen(generated_xs) - + strlen(self->boot_class) * 2 - + strlen(xs_init) - + strlen(hand_rolled_xs) - + 30; - char *contents = (char*)MALLOCATE(size); - sprintf(contents, pattern, self->boot_h_file, generated_xs, - self->boot_class, self->boot_class, xs_init, hand_rolled_xs); + char *contents + = CFCUtil_sprintf(pattern, self->boot_h_file, generated_xs, + self->boot_class, self->boot_class, xs_init, + hand_rolled_xs); return contents; } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlClass.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerlClass.c b/clownfish/compiler/src/CFCPerlClass.c index 296aa01..03fdba7 100644 --- a/clownfish/compiler/src/CFCPerlClass.c +++ b/clownfish/compiler/src/CFCPerlClass.c @@ -491,20 +491,9 @@ CFCPerlClass_create_pod(CFCPerlClass *self) { "\n" "=cut\n" "\n"; - - size_t size = sizeof(pattern) - + strlen(class_name) - + strlen(brief) - + strlen(synopsis) - + strlen(description) - + strlen(constructor_pod) - + strlen(methods_pod) - + strlen(inheritance) - + 20; - - char *pod = (char*)MALLOCATE(size); - sprintf(pod, pattern, class_name, brief, synopsis, description, - constructor_pod, methods_pod, inheritance); + char *pod + = CFCUtil_sprintf(pattern, class_name, brief, synopsis, description, + constructor_pod, methods_pod, inheritance); FREEMEM(brief); FREEMEM(synopsis); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlConstructor.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerlConstructor.c b/clownfish/compiler/src/CFCPerlConstructor.c index 7e6b0b1..2ca468f 100644 --- a/clownfish/compiler/src/CFCPerlConstructor.c +++ b/clownfish/compiler/src/CFCPerlConstructor.c @@ -135,17 +135,10 @@ CFCPerlConstructor_xsub_def(CFCPerlConstructor *self) { " sv_2mortal(ST(0));\n" " XSRETURN(1);\n" "}\n\n"; - size_t size = sizeof(pattern) - + strlen(c_name) * 2 - + strlen(allot_params) - + strlen(self_type_str) * 2 - + strlen(refcount_mods) - + strlen(self_type_str) - + strlen(func_sym) - + strlen(name_list); - char *xsub_def = (char*)MALLOCATE(size); - sprintf(xsub_def, pattern, c_name, c_name, allot_params, self_type_str, - self_type_str, refcount_mods, self_type_str, func_sym, name_list); + char *xsub_def + = CFCUtil_sprintf(pattern, c_name, c_name, allot_params, self_type_str, + self_type_str, refcount_mods, self_type_str, + func_sym, name_list); FREEMEM(refcount_mods); FREEMEM(allot_params); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlMethod.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerlMethod.c b/clownfish/compiler/src/CFCPerlMethod.c index a0cb4db..0a3de96 100644 --- a/clownfish/compiler/src/CFCPerlMethod.c +++ b/clownfish/compiler/src/CFCPerlMethod.c @@ -239,13 +239,8 @@ S_self_assign_statement(CFCPerlMethod *self, CFCType *type, ? "XSBind_maybe_sv_to_cfish_obj" : "XSBind_sv_to_cfish_obj"; char pattern[] = "%s self = (%s)%s(ST(0), %s, NULL);"; - size_t size = sizeof(pattern) - + strlen(type_c) * 2 - + strlen(binding_func) - + strlen(vtable_var) - + 10; - char *statement = (char*)MALLOCATE(size); - sprintf(statement, pattern, type_c, type_c, binding_func, vtable_var); + char *statement + = CFCUtil_sprintf(pattern, type_c, type_c, binding_func, vtable_var); return statement; } @@ -278,16 +273,9 @@ S_xsub_def_labeled_params(CFCPerlMethod *self) { " /* Execute */\n" " %s\n" "}\n"; - size_t size = sizeof(pattern) - + strlen(c_name) * 2 - + strlen(self_micro_sym) - + strlen(allot_params) - + strlen(self_assign) - + strlen(body) - + 40; - char *xsub_def = (char*)MALLOCATE(size); - sprintf(xsub_def, pattern, c_name, c_name, self_micro_sym, allot_params, - self_assign, body); + char *xsub_def + = CFCUtil_sprintf(pattern, c_name, c_name, self_micro_sym, + allot_params, self_assign, body); FREEMEM(self_assign); FREEMEM(allot_params); @@ -326,17 +314,14 @@ S_xsub_def_positional_args(CFCPerlMethod *self) { } const char num_args_pattern[] = "if (items %s %u) { CFISH_THROW(CFISH_ERR, \"Usage: %%s(%s)\", GvNAME(CvGV(cv))); }"; - size_t num_args_check_size = sizeof(num_args_pattern) - + strlen(xs_name_list) - + 30; - char *num_args_check = (char*)MALLOCATE(num_args_check_size); + char *num_args_check; if (min_required < num_vars) { - sprintf(num_args_check, num_args_pattern, "<", min_required, - xs_name_list); + num_args_check = CFCUtil_sprintf(num_args_pattern, "<", min_required, + xs_name_list); } else { - sprintf(num_args_check, num_args_pattern, "!=", num_vars, - xs_name_list); + num_args_check = CFCUtil_sprintf(num_args_pattern, "!=", num_vars, + xs_name_list); } // Var assignments. @@ -367,15 +352,8 @@ S_xsub_def_positional_args(CFCPerlMethod *self) { char pattern[] = "\n %s %s = ( items >= %u && XSBind_sv_defined(ST(%u)) )" " ? %s : %s;"; - size_t size = sizeof(pattern) - + strlen(type_c) - + strlen(var_name) - + strlen(conversion) - + strlen(val) - + 100; - char *statement = (char*)MALLOCATE(size); - sprintf(statement, pattern, type_c, var_name, i, i, - conversion, val); + char *statement = CFCUtil_sprintf(pattern, type_c, var_name, i, + i, conversion, val); var_assignments = CFCUtil_cat(var_assignments, statement, NULL); FREEMEM(statement); @@ -403,15 +381,9 @@ S_xsub_def_positional_args(CFCPerlMethod *self) { " /* Execute */\n" " %s\n" "}\n"; - size_t size = sizeof(pattern) - + strlen(self->sub.c_name) * 2 - + strlen(num_args_check) - + strlen(var_assignments) - + strlen(body) - + 20; - char *xsub = (char*)MALLOCATE(size); - sprintf(xsub, pattern, self->sub.c_name, self->sub.c_name, num_args_check, - var_assignments, body); + char *xsub + = CFCUtil_sprintf(pattern, self->sub.c_name, self->sub.c_name, + num_args_check, var_assignments, body); FREEMEM(num_args_check); FREEMEM(var_assignments); @@ -477,9 +449,8 @@ S_maybe_unreachable(CFCType *return_type) { } else { const char *ret_type_str = CFCType_to_c(return_type); - return_statement = (char*)MALLOCATE(strlen(ret_type_str) + 60); - sprintf(return_statement, "\n CHY_UNREACHABLE_RETURN(%s);", - ret_type_str); + char pattern[] = "\n CHY_UNREACHABLE_RETURN(%s);"; + return_statement = CFCUtil_sprintf(pattern, ret_type_str); } return return_statement; } @@ -498,8 +469,7 @@ S_callback_start(CFCMethod *method) { int num_to_extend = num_args == 0 ? 1 : num_args == 1 ? 2 : 1 + (num_args * 2); - char *params = (char*)MALLOCATE(sizeof(pattern) + 20); - sprintf(params, pattern, num_to_extend); + char *params = CFCUtil_sprintf(pattern, num_to_extend); // Iterate over arguments, mapping them to Perl scalars. CFCVariable **arg_vars = CFCParamList_get_variables(param_list); @@ -623,17 +593,9 @@ S_invalid_callback_def(CFCMethod *method) { "%s(%s) {%s\n" " CFISH_THROW(CFISH_ERR, \"Can't override %s via binding\");%s\n" "}\n"; - size_t size = sizeof(pattern) - + strlen(ret_type_str) - + strlen(override_sym) - + strlen(params) - + strlen(unused) - + strlen(full_method_sym) - + strlen(unreachable) - + 20; - char *callback_def = (char*)MALLOCATE(size); - sprintf(callback_def, pattern, ret_type_str, override_sym, params, unused, - full_method_sym, unreachable); + char *callback_def + = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params, unused, + full_method_sym, unreachable); FREEMEM(full_method_sym); FREEMEM(unreachable); @@ -653,17 +615,9 @@ S_void_callback_def(CFCMethod *method, const char *callback_start, "%s" " S_finish_callback_void(\"%s\");%s\n" "}\n"; - - size_t size = sizeof(pattern) - + strlen(override_sym) - + strlen(params) - + strlen(callback_start) - + strlen(micro_sym) - + strlen(refcount_mods) - + 20; - char *callback_def = (char*)MALLOCATE(size); - sprintf(callback_def, pattern, override_sym, params, callback_start, - micro_sym, refcount_mods); + char *callback_def + = CFCUtil_sprintf(pattern, override_sym, params, callback_start, + micro_sym, refcount_mods); return callback_def; } @@ -695,21 +649,10 @@ S_primitive_callback_def(CFCMethod *method, const char *callback_start, " %s retval = (%s)%s(\"%s\");%s\n" " return retval;\n" "}\n"; - size_t size = sizeof(pattern) - + strlen(ret_type_str) - + strlen(override_sym) - + strlen(params) - + strlen(callback_start) - + strlen(ret_type_str) - + strlen(ret_type_str) - + strlen(callback_func) - + strlen(micro_sym) - + strlen(refcount_mods) - + 30; - char *callback_def = (char*)MALLOCATE(size); - sprintf(callback_def, pattern, ret_type_str, override_sym, params, - callback_start, ret_type_str, ret_type_str, callback_func, - micro_sym, refcount_mods); + char *callback_def + = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params, + callback_start, ret_type_str, ret_type_str, + callback_func, micro_sym, refcount_mods); return callback_def; } @@ -731,22 +674,10 @@ S_obj_callback_def(CFCMethod *method, const char *callback_start, " %s retval = (%s)S_finish_callback_obj(self, \"%s\", %s);%s\n" " return retval;\n" "}\n"; - - size_t size = sizeof(pattern) - + strlen(ret_type_str) - + strlen(override_sym) - + strlen(params) - + strlen(callback_start) - + strlen(ret_type_str) - + strlen(ret_type_str) - + strlen(micro_sym) - + strlen(nullable) - + strlen(refcount_mods) - + 30; - char *callback_def = (char*)MALLOCATE(size); - sprintf(callback_def, pattern, ret_type_str, override_sym, params, - callback_start, ret_type_str, ret_type_str, micro_sym, nullable, - refcount_mods); + char *callback_def + = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params, + callback_start, ret_type_str, ret_type_str, + micro_sym, nullable, refcount_mods); return callback_def; } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlSub.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerlSub.c b/clownfish/compiler/src/CFCPerlSub.c index c3533a5..ccc9077 100644 --- a/clownfish/compiler/src/CFCPerlSub.c +++ b/clownfish/compiler/src/CFCPerlSub.c @@ -159,16 +159,8 @@ S_allot_params_arg(CFCType *type, const char *label, int required) { ? "alloca(cfish_ZCB_size())" : "NULL"; const char pattern[] = "ALLOT_OBJ(&%s, \"%s\", %u, %s, %s, %s)"; - size_t size = sizeof(pattern) - + label_len * 2 - + 20 - + 5 - + strlen(vtable_var) - + strlen(zcb_allocation) - + 50; - char *arg = (char*)MALLOCATE(size); - sprintf(arg, pattern, label, label, label_len, req_string, vtable_var, - zcb_allocation); + char *arg = CFCUtil_sprintf(pattern, label, label, label_len, + req_string, vtable_var, zcb_allocation); return arg; } else if (CFCType_is_primitive(type)) { @@ -177,15 +169,8 @@ S_allot_params_arg(CFCType *type, const char *label, int required) { if (strcmp(prim_type, type_c_string) == 0) { const char *allot = prim_type_to_allot_macro[i].allot_macro; char pattern[] = "%s(&%s, \"%s\", %u, %s)"; - size_t size = sizeof(pattern) - + strlen(allot) - + label_len * 2 - + 20 - + 5 - + 20; // extra - char *arg = (char*)MALLOCATE(size); - sprintf(arg, pattern, allot, label, label, label_len, - req_string); + char *arg = CFCUtil_sprintf(pattern, allot, label, label, + label_len, req_string); return arg; } } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlTypeMap.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCPerlTypeMap.c b/clownfish/compiler/src/CFCPerlTypeMap.c index 3ab05eb..864ede4 100644 --- a/clownfish/compiler/src/CFCPerlTypeMap.c +++ b/clownfish/compiler/src/CFCPerlTypeMap.c @@ -61,56 +61,54 @@ CFCPerlTypeMap_from_perl(CFCType *type, const char *xs_var) { } else if (CFCType_is_primitive(type)) { const char *specifier = CFCType_get_specifier(type); - size_t size = 80 + strlen(xs_var) * 2; - result = (char*)MALLOCATE(size); if (strcmp(specifier, "double") == 0) { - sprintf(result, "SvNV(%s)", xs_var); + result = CFCUtil_sprintf("SvNV(%s)", xs_var); } else if (strcmp(specifier, "float") == 0) { - sprintf(result, "(float)SvNV(%s)", xs_var); + result = CFCUtil_sprintf("(float)SvNV(%s)", xs_var); } else if (strcmp(specifier, "int") == 0) { - sprintf(result, "(int)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(int)SvIV(%s)", xs_var); } else if (strcmp(specifier, "short") == 0) { - sprintf(result, "(short)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(short)SvIV(%s)", xs_var); } else if (strcmp(specifier, "long") == 0) { const char pattern[] = "((sizeof(long) <= sizeof(IV)) ? (long)SvIV(%s) " ": (long)SvNV(%s))"; - sprintf(result, pattern, xs_var, xs_var); + result = CFCUtil_sprintf(pattern, xs_var, xs_var); } else if (strcmp(specifier, "size_t") == 0) { - sprintf(result, "(size_t)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(size_t)SvIV(%s)", xs_var); } else if (strcmp(specifier, "uint64_t") == 0) { - sprintf(result, "(uint64_t)SvNV(%s)", xs_var); + result = CFCUtil_sprintf("(uint64_t)SvNV(%s)", xs_var); } else if (strcmp(specifier, "uint32_t") == 0) { - sprintf(result, "(uint32_t)SvUV(%s)", xs_var); + result = CFCUtil_sprintf("(uint32_t)SvUV(%s)", xs_var); } else if (strcmp(specifier, "uint16_t") == 0) { - sprintf(result, "(uint16_t)SvUV(%s)", xs_var); + result = CFCUtil_sprintf("(uint16_t)SvUV(%s)", xs_var); } else if (strcmp(specifier, "uint8_t") == 0) { - sprintf(result, "(uint8_t)SvUV(%s)", xs_var); + result = CFCUtil_sprintf("(uint8_t)SvUV(%s)", xs_var); } else if (strcmp(specifier, "int64_t") == 0) { - sprintf(result, "(int64_t)SvNV(%s)", xs_var); + result = CFCUtil_sprintf("(int64_t)SvNV(%s)", xs_var); } else if (strcmp(specifier, "int32_t") == 0) { - sprintf(result, "(int32_t)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(int32_t)SvIV(%s)", xs_var); } else if (strcmp(specifier, "int16_t") == 0) { - sprintf(result, "(int16_t)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(int16_t)SvIV(%s)", xs_var); } else if (strcmp(specifier, "int8_t") == 0) { - sprintf(result, "(int8_t)SvIV(%s)", xs_var); + result = CFCUtil_sprintf("(int8_t)SvIV(%s)", xs_var); } else if (strcmp(specifier, "bool") == 0) { - sprintf(result, "SvTRUE(%s) ? 1 : 0", xs_var); + result = CFCUtil_sprintf("SvTRUE(%s) ? 1 : 0", xs_var); } else { FREEMEM(result); @@ -135,60 +133,58 @@ CFCPerlTypeMap_to_perl(CFCType *type, const char *cf_var) { else if (CFCType_is_primitive(type)) { // Convert from a primitive type to a Perl scalar. const char *specifier = CFCType_get_specifier(type); - size_t size = 80 + strlen(cf_var) * 2; - result = (char*)MALLOCATE(size); if (strcmp(specifier, "double") == 0) { - sprintf(result, "newSVnv(%s)", cf_var); + result = CFCUtil_sprintf("newSVnv(%s)", cf_var); } else if (strcmp(specifier, "float") == 0) { - sprintf(result, "newSVnv(%s)", cf_var); + result = CFCUtil_sprintf("newSVnv(%s)", cf_var); } else if (strcmp(specifier, "int") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "short") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "long") == 0) { char pattern[] = "((sizeof(long) <= sizeof(IV)) ? " "newSViv((IV)%s) : newSVnv((NV)%s))"; - sprintf(result, pattern, cf_var, cf_var); + result = CFCUtil_sprintf(pattern, cf_var, cf_var); } else if (strcmp(specifier, "size_t") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "uint64_t") == 0) { char pattern[] = "sizeof(UV) == 8 ? " "newSVuv((UV)%s) : newSVnv((NV)CHY_U64_TO_DOUBLE(%s))"; - sprintf(result, pattern, cf_var, cf_var); + result = CFCUtil_sprintf(pattern, cf_var, cf_var); } else if (strcmp(specifier, "uint32_t") == 0) { - sprintf(result, "newSVuv(%s)", cf_var); + result = CFCUtil_sprintf("newSVuv(%s)", cf_var); } else if (strcmp(specifier, "uint16_t") == 0) { - sprintf(result, "newSVuv(%s)", cf_var); + result = CFCUtil_sprintf("newSVuv(%s)", cf_var); } else if (strcmp(specifier, "uint8_t") == 0) { - sprintf(result, "newSVuv(%s)", cf_var); + result = CFCUtil_sprintf("newSVuv(%s)", cf_var); } else if (strcmp(specifier, "int64_t") == 0) { char pattern[] = "sizeof(IV) == 8 ? newSViv((IV)%s) : newSVnv((NV)%s)"; - sprintf(result, pattern, cf_var, cf_var); + result = CFCUtil_sprintf(pattern, cf_var, cf_var); } else if (strcmp(specifier, "int32_t") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "int16_t") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "int8_t") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else if (strcmp(specifier, "bool") == 0) { - sprintf(result, "newSViv(%s)", cf_var); + result = CFCUtil_sprintf("newSViv(%s)", cf_var); } else { FREEMEM(result); http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCUtil.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCUtil.c b/clownfish/compiler/src/CFCUtil.c index 5316f00..3f56cd0 100644 --- a/clownfish/compiler/src/CFCUtil.c +++ b/clownfish/compiler/src/CFCUtil.c @@ -374,25 +374,17 @@ CFCUtil_walk(const char *path, CFCUtil_walk_callback_t callback, if (!(stat_buf.st_mode & S_IFDIR)) { return; } - void *dirhandle = CFCUtil_opendir(path); - size_t dir_len = strlen(path); - size_t subpath_cap = dir_len * 2; - char *subpath = (char*)MALLOCATE(subpath_cap); - const char *entry = NULL; + void *dirhandle = CFCUtil_opendir(path); + const char *entry = NULL; while (NULL != (entry = CFCUtil_dirnext(dirhandle))) { if (strcmp(entry, ".") == 0 || strcmp(entry, "..") == 0) { continue; } - size_t name_len = strlen(entry); - size_t needed = dir_len + 1 + name_len + 1; - if (needed > subpath_cap) { - subpath_cap = needed; - subpath = (char*)REALLOCATE(subpath, subpath_cap); - } - sprintf(subpath, "%s" CFCUTIL_PATH_SEP "%s", path, entry); + char *subpath = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s", path, + entry); CFCUtil_walk(subpath, callback, context); + FREEMEM(subpath); } - FREEMEM(subpath); CFCUtil_closedir(dirhandle, path); } http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCVariable.c ---------------------------------------------------------------------- diff --git a/clownfish/compiler/src/CFCVariable.c b/clownfish/compiler/src/CFCVariable.c index 0eabb07..631480a 100644 --- a/clownfish/compiler/src/CFCVariable.c +++ b/clownfish/compiler/src/CFCVariable.c @@ -80,17 +80,10 @@ CFCVariable_init(CFCVariable *self, struct CFCParcel *parcel, if (CFCType_is_composite(type) && CFCType_get_array(type) != NULL) { postfix = CFCType_get_array(type); } - size_t size = strlen(type_str) + sizeof(" ") + strlen(micro_sym) + - strlen(postfix) + 1; - self->local_c = (char*)MALLOCATE(size); - sprintf(self->local_c, "%s %s%s", type_str, micro_sym, postfix); - self->local_dec = (char*)MALLOCATE(strlen(self->local_c) + sizeof(";\0")); - sprintf(self->local_dec, "%s;", self->local_c); + self->local_c = CFCUtil_sprintf("%s %s%s", type_str, micro_sym, postfix); + self->local_dec = CFCUtil_sprintf("%s;", self->local_c); const char *full_sym = CFCVariable_full_sym(self); - size_t full_size = strlen(type_str) + sizeof(" ") + strlen(full_sym) + - strlen(postfix) + 1; - self->global_c = (char*)MALLOCATE(full_size); - sprintf(self->global_c, "%s %s%s", type_str, full_sym, postfix); + self->global_c = CFCUtil_sprintf("%s %s%s", type_str, full_sym, postfix); return self; }
