libctf: error-handling fixes
libctf/ChangeLog 2020-11-20 Nick Alcock <nick.alcock@oracle.com> * ctf-create.c (ctf_dtd_insert): Set ENOMEM on the dict if out of memory. (ctf_dvd_insert): Likewise. (ctf_add_function): Report ECTF_RDONLY if this dict is not writable. * ctf-subr.c (ctf_err_warn): Only debug-dump passed-in warnings if the passed-in error code is nonzero: the error on the dict for warnings may relate to a previous error.
This commit is contained in:
parent
97a2a623d0
commit
8f235c90a2
3 changed files with 25 additions and 4 deletions
|
@ -225,10 +225,12 @@ ctf_err_warn (ctf_dict_t *fp, int is_warning, int err,
|
|||
}
|
||||
va_end (alist);
|
||||
|
||||
/* Include the error code only if there is one, and if this is not a warning.
|
||||
/* Include the error code only if there is one; if this is not a warning,
|
||||
only use the error code if it was explicitly passed and is nonzero.
|
||||
(Warnings may not have a meaningful error code, since the warning may not
|
||||
lead to unwinding up to the user.) */
|
||||
if (!is_warning && (err != 0 || (fp && ctf_errno (fp) != 0)))
|
||||
if ((!is_warning && (err != 0 || (fp && ctf_errno (fp) != 0)))
|
||||
|| (is_warning && err != 0))
|
||||
ctf_dprintf ("%s: %s (%s)\n", is_warning ? _("error") : _("warning"),
|
||||
cew->cew_text, err != 0 ? ctf_errmsg (err)
|
||||
: ctf_errmsg (ctf_errno (fp)));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue