if (streq(string, structname(plist->pl.param_type))) {
plist->pl.string_name = spec->sdef.string_name;
plist->pl.param_flag |= FREETHIS_PARAM;
- fprintf(fout, "\n\t%s.%s = 0;", plist->pl.param_name,
- spec->sdef.string_name);
}
}
}
case REL_ARRAY:
plist->pl.string_name = alloc(40);
if (brief_flag) {
- f_print(fout, "\n\t%s.val = 0;",
- plist->pl.param_name);
- f_print(fout, "\n\t%s.len = 0;",
- plist->pl.param_name);
s_print(plist->pl.string_name, "val");
} else {
- f_print(fout, "\n\t%s.%s_val = 0;",
- plist->pl.param_name, defp1->def_name);
- f_print(fout, "\n\t%s.%s_len = 0;",
- plist->pl.param_name, defp1->def_name);
s_print(plist->pl.string_name, "%s_val",
defp1->def_name);
}
break;
case REL_POINTER:
- f_print(fout, "\n\t%s = 0;", plist->pl.param_name);
plist->pl.string_name = NULL;
break;
default:
if (plist->component_kind == DEF_PARAM) {
if (streq(defp1->def_name, structname(plist->pl.param_type))) {
plist->pl.param_flag |= FREETHIS_PARAM;
- fprintf(fout, "\n\tmemset(&%s, 0, sizeof(%s));",
- plist->pl.param_name, defp1->def_name);
}
}
}
}
+ for (plist = defp->pc.plists; plist; plist = plist->next) {
+ if (plist->component_kind == DEF_PARAM) {
+ fprintf(fout, "\n\tmemset(&%s, 0, sizeof(%s));",
+ plist->pl.param_name,
+ plist->pl.param_name);
+ }
+ }
+
f_print(fout, "\n");
}