- if (! xr->xref.string) MEMORY_ERROR;
- hash_alloc_insert(xrefs, key, xr);
+ if (! xr->xref.string) {
+ MEMORY_ERROR;
+ free(key);
+ delete_xref_node(xr);
+ xr = NULL;
+ }
+ else {
+ hash_alloc_insert(xrefs, key, xr);
+ }
- xr = add_xref(type, xrefstr, object);
- set_xref_fields(xr, XREF_DEFINED, type);
+ xr = add_xref(type, xrefstr, object);
+ if (xr)
+ set_xref_fields(xr, XREF_DEFINED, type);