aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'libctf/ctf-subr.c')
-rw-r--r--libctf/ctf-subr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libctf/ctf-subr.c b/libctf/ctf-subr.c
index c902494..a4d445a 100644
--- a/libctf/ctf-subr.c
+++ b/libctf/ctf-subr.c
@@ -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)));