Issue reported to GLib https://gitlab.gnome.org/GNOME/glib/-/issues/3740
PR with fix https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4716

@Markus Armbruster <arm...@redhat.com>
Based on the documentation from this PR, do you have any other objections
to this patch?

Best Regards,
Konstantin Kostiuk.


On Mon, Jul 21, 2025 at 2:53 PM Philippe Mathieu-Daudé <phi...@linaro.org>
wrote:

> On 21/7/25 12:12, Kostiantyn Kostiuk wrote:
> >
> >
> > On Mon, Jul 21, 2025 at 12:22 PM Markus Armbruster <arm...@redhat.com
> > <mailto:arm...@redhat.com>> wrote:
> >
> >     Kostiantyn Kostiuk <kkost...@redhat.com
> >     <mailto:kkost...@redhat.com>> writes:
> >
> >      > On Sat, Jul 19, 2025 at 9:27 AM Markus Armbruster
> >     <arm...@redhat.com <mailto:arm...@redhat.com>> wrote:
> >      >
> >      >> Kostiantyn Kostiuk <kkost...@redhat.com
> >     <mailto: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()?
> >      >>
> >      >
> >      > No.
> >      > VSS functions directly return an error code.
> >      > Section: Return value -
> >      > https://learn.microsoft.com/en-us/windows/win32/api/vsbackup/nf-
> >     vsbackup-ivssbackupcomponents-addtosnapshotset <https://
> >     learn.microsoft.com/en-us/windows/win32/api/vsbackup/nf-vsbackup-
> >     ivssbackupcomponents-addtosnapshotset>
> >      >
> >      > Performance Counters API can return a system error code or a PDH
> >     error code.
> >      > Section: Return value -
> >      > https://learn.microsoft.com/en-us/windows/win32/api/pdh/nf-pdh-
> >     pdhopenqueryw <https://learn.microsoft.com/en-us/windows/win32/api/
> >     pdh/nf-pdh-pdhopenqueryw>
> >      > System error code = GetLastError, PDH error code, something else.
> >      >
> >      > https://learn.microsoft.com/en-us/windows/win32/perfctrs/pdh-
> >     error-codes <https://learn.microsoft.com/en-us/windows/win32/
> >     perfctrs/pdh-error-codes>
> >      > FormatMessage requires LoadLibrary(L"pdh.dll") to work properly.
> >
> >     The error code error_setg_win32() takes is passed to
> >     g_win32_error_message().  Contract:
> >
> >          g_win32_error_message ()
> >
> >          gchar *
> >          g_win32_error_message (gint error);
> >
> >          Translate a Win32 error code (as returned by GetLastError() or
> >          WSAGetLastError()) into the corresponding message.  The message
> is
> >          either language neutral, or in the thread's language, or the
> user's
> >          language, the system's language, or US English (see docs for
> >          FormatMessage()).  The returned string is in UTF-8.  It should
> be
> >          deallocated with g_free().
> >
> >          Parameters
> >
> >              error error code.
> >
> >          Returns
> >
> >              newly-allocated error message
> >
> >     https://www.manpagez.com/html/glib/glib-2.46.0/glib-Windows-
> >     Compatibility-Functions.php#g-win32-error-message <https://
> >     www.manpagez.com/html/glib/glib-2.46.0/glib-Windows-Compatibility-
> >     Functions.php#g-win32-error-message>
> >
> >     Passing error codes from sources other than GetLastError() or
> >     WSAGetLastError() violates this contract.
> >
> >     Apparently, g_win32_error_message() returns NULL then.  This is not
> >     documented behavior.
> >
> >
> > It returns an empty string, not NULL.
> > https://gitlab.gnome.org/GNOME/glib/-/blob/
> > a205d01adc3fbc4f243e0b0fb52a3a0a8a0d9ae7/glib/gwin32.c#L216 <https://
> > gitlab.gnome.org/GNOME/glib/-/blob/
> > a205d01adc3fbc4f243e0b0fb52a3a0a8a0d9ae7/glib/gwin32.c#L216>
>
> Worth reporting to GLib IMHO.
>
>

Reply via email to