- if (syms->next == NULL) {
- syms->next = XMALLOC (merger_list, 1);
- syms->next->name = strdup (name);
- syms->next->type = strdup (type);
- syms->next->next = NULL;
- merge_functions = head.next;
- } else if (strcmp (type, syms->next->type) != 0)
- warn (_("result type clash on merge function %s: `%s' vs. `%s'"),
- name, type, syms->next->type);
+ if (syms->next == NULL)
+ {
+ syms->next = XMALLOC (merger_list, 1);
+ syms->next->name = struniq_new (name);
+ syms->next->type = struniq_new (type);
+ syms->next->next = NULL;
+ merge_functions = head.next;
+ }
+ else if (!STRUNIQ_EQ (type, syms->next->type))
+ warn_at (loc, _("result type clash on merge function %s: <%s> != <%s>"),
+ name, type, syms->next->type);