diff --git a/libctf/ChangeLog b/libctf/ChangeLog index 056cb7b929d..7868d0b5a9e 100644 --- a/libctf/ChangeLog +++ b/libctf/ChangeLog @@ -1,3 +1,8 @@ +2020-06-26 Nick Alcock + + * ctf-create.c (ctf_add_forward): Don't add forwards to + types that already exist. + 2020-06-26 Nick Alcock * ctf-open.c (init_types): Only intern root-visible types. diff --git a/libctf/ctf-create.c b/libctf/ctf-create.c index e8e80287cb3..c24a246c164 100644 --- a/libctf/ctf-create.c +++ b/libctf/ctf-create.c @@ -1229,7 +1229,10 @@ ctf_add_forward (ctf_file_t *fp, uint32_t flag, const char *name, if (name != NULL) type = ctf_lookup_by_rawname (fp, kind, name); - if ((type = ctf_add_generic (fp, flag, name, CTF_K_FORWARD,&dtd)) == CTF_ERR) + if (type) + return type; + + if ((type = ctf_add_generic (fp, flag, name, CTF_K_FORWARD, &dtd)) == CTF_ERR) return CTF_ERR; /* errno is set for us. */ dtd->dtd_data.ctt_info = CTF_TYPE_INFO (CTF_K_FORWARD, flag, 0);