return prefixed;
}
-void
+int
ctf_dtd_insert (ctf_file_t *fp, ctf_dtdef_t *dtd)
{
- ctf_dynhash_insert (fp->ctf_dthash, (void *) dtd->dtd_type, dtd);
- ctf_list_append (&fp->ctf_dtdefs, dtd);
+ if (ctf_dynhash_insert (fp->ctf_dthash, (void *) dtd->dtd_type, dtd) < 0)
+ return -1;
+
if (dtd->dtd_name)
{
int kind = LCTF_INFO_KIND (fp, dtd->dtd_data.ctt_info);
- ctf_dynhash_insert (fp->ctf_dtbyname, ctf_prefixed_name (kind,
- dtd->dtd_name),
- dtd);
+ if (ctf_dynhash_insert (fp->ctf_dtbyname,
+ ctf_prefixed_name (kind, dtd->dtd_name),
+ dtd) < 0)
+ return -1;
}
+ ctf_list_append (&fp->ctf_dtdefs, dtd);
+ return 0;
}
void
return NULL;
}
-void
+int
ctf_dvd_insert (ctf_file_t *fp, ctf_dvdef_t *dvd)
{
- ctf_dynhash_insert (fp->ctf_dvhash, dvd->dvd_name, dvd);
+ if (ctf_dynhash_insert (fp->ctf_dvhash, dvd->dvd_name, dvd) < 0)
+ return -1;
ctf_list_append (&fp->ctf_dvdefs, dvd);
+ return 0;
}
void
if (s != NULL)
fp->ctf_dtvstrlen += strlen (s) + 1;
- ctf_dtd_insert (fp, dtd);
+ if (ctf_dtd_insert (fp, dtd) < 0)
+ {
+ ctf_free (dtd);
+ return CTF_ERR; /* errno is set for us. */
+ }
fp->ctf_flags |= LCTF_DIRTY;
*rp = dtd;
dvd->dvd_type = ref;
dvd->dvd_snapshots = fp->ctf_snapshots;
- ctf_dvd_insert (fp, dvd);
+ if (ctf_dvd_insert (fp, dvd) < 0)
+ {
+ ctf_free (dvd);
+ return -1; /* errno is set for us. */
+ }
fp->ctf_dtvstrlen += strlen (name) + 1;
fp->ctf_flags |= LCTF_DIRTY;