Kostiantyn Kostiuk <kkost...@redhat.com> writes: > g_win32_error_message - translate a Win32 error code > (as returned by GetLastError()) into the corresponding message. > > In the same time, we call error_setg_win32_internal with > error codes from different Windows componets like VSS or > Performance monitor that provides different codes and > can't be converted with g_win32_error_message.
Are these error codes from GetLastError()? > In this > case, the empty suffix will be returned so error will be > masked. > > QGA error example: > - before changes: > {"error": {"class": "GenericError", "desc": "failed to add D:\\ to snapshot > set: "}} > - after changes: > {"error": {"class": "GenericError", "desc": "failed to add D:\\ to snapshot > set: unknown Windows error 0x8004230e"}} Exact reproducer? > Signed-off-by: Kostiantyn Kostiuk <kkost...@redhat.com> > --- > util/error.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/util/error.c b/util/error.c > index daea2142f3..b1342558ae 100644 > --- a/util/error.c > +++ b/util/error.c > @@ -188,6 +188,11 @@ void error_setg_win32_internal(Error **errp, > > if (win32_err != 0) { > suffix = g_win32_error_message(win32_err); > + // g_win32_error_message() failed > + if (!suffix[0]) { > + g_free(suffix); > + suffix = g_strdup_printf("unknown Windows error 0x%x", > win32_err); > + } > } > > va_start(ap, fmt);