diff --git a/compiler2/union.c b/compiler2/union.c index c3f45005da9310b233fed071043ed4e9930343e6..c355393c7ab57af976bdc00442962842e7154dc6 100644 --- a/compiler2/union.c +++ b/compiler2/union.c @@ -400,11 +400,12 @@ void defUnionClass(struct_def const *sdef, output_struct *output) " if (m_p->get_type()!=Module_Param::MP_Assignment_List) {\n" " param.error(\"union value with field name was expected\");\n" " }\n" - " Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);\n"); + " Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);\n" + " char* last_name = mp_last->get_id()->get_name();\n"); for (i = 0; i < sdef->nElements; i++) { src = mputprintf(src, - " if (!strcmp(mp_last->get_id()->get_name(), \"%s\")) {\n" + " if (!strcmp(last_name, \"%s\")) {\n" " %s%s().set_param(*mp_last);\n" " if (!%s%s().is_bound()) " , sdef->elements[i].dispname, at_field, sdef->elements[i].name @@ -424,7 +425,7 @@ void defUnionClass(struct_def const *sdef, output_struct *output) " }\n"); } src = mputprintf(src, - " mp_last->error(\"Field %%s does not exist in type %s.\", mp_last->get_id()->get_name());\n" + " mp_last->error(\"Field %%s does not exist in type %s.\", last_name);\n" "}\n\n", dispname); /* get param function, RT2 only */ @@ -3420,17 +3421,18 @@ void defUnionTemplate(const struct_def *sdef, output_struct *output) " param.type_error(\"union template\", \"%s\");\n" " break;\n" " case Module_Param::MP_Assignment_List: {\n" - " Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);\n", + " Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1);\n" + " char* last_name = mp_last->get_id()->get_name();\n", name, dispname); for (i = 0; i < sdef->nElements; i++) { src = mputprintf(src, - " if (!strcmp(mp_last->get_id()->get_name(), \"%s\")) {\n" + " if (!strcmp(last_name, \"%s\")) {\n" " %s%s().set_param(*mp_last);\n" " break;\n" " }\n", sdef->elements[i].dispname, at_field, sdef->elements[i].name); } src = mputprintf(src, - " mp_last->error(\"Field %%s does not exist in type %s.\", mp_last->get_id()->get_name());\n" + " mp_last->error(\"Field %%s does not exist in type %s.\", last_name);\n" " } break;\n" " default:\n" " param.type_error(\"union template\", \"%s\");\n"