Amos Kong <kongjian...@gmail.com> writes: > On Fri, Nov 07, 2014 at 11:24:55AM +0900, SeokYeon Hwang wrote: >> Added 'assert(os_errno > 0)' in 'error_set_errno()'. >> Fixed errno since it passes wrong value to 'error_set_errno()'. >> >> Signed-off-by: SeokYeon Hwang <syeon.hw...@samsung.com> >> --- >> hw/pci/pcie.c | 2 +- >> util/error.c | 1 + >> 2 files changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c >> index 58455bd..2902f7d 100644 >> --- a/hw/pci/pcie.c >> +++ b/hw/pci/pcie.c >> @@ -229,7 +229,7 @@ static void pcie_cap_slot_hotplug_common(PCIDevice >> *hotplug_dev, >> /* the slot is electromechanically locked. >> * This error is propagated up to qdev and then to HMP/QMP. >> */ >> - error_setg_errno(errp, -EBUSY, "slot is electromechanically >> locked"); >> + error_setg_errno(errp, EBUSY, "slot is electromechanically locked"); >> } >> } >> >> diff --git a/util/error.c b/util/error.c >> index 2ace0d8..4ce22cc 100644 >> --- a/util/error.c >> +++ b/util/error.c >> @@ -62,6 +62,7 @@ void error_set_errno(Error **errp, int os_errno, >> ErrorClass err_class, >> return; >> } >> assert(*errp == NULL); >> + assert(os_errno > 0); > > strerror(0) will return string 'Success', do we need to reserve zero here? > > assert(os_errno >= 0);
Yes, because... >> err = g_malloc0(sizeof(*err)); >> va_start(ap, fmt); msg1 = g_strdup_vprintf(fmt, ap); ---> if (os_errno != 0) { err->msg = g_strdup_printf("%s: %s", msg1, strerror(os_errno)); g_free(msg1); } else { err->msg = msg1; } Please fix.