Make libpq_gettext save and restore errno in a Windows-compatible way.
authorTom Lane <[email protected]>
Fri, 8 Jul 2005 15:25:36 +0000 (15:25 +0000)
committerTom Lane <[email protected]>
Fri, 8 Jul 2005 15:25:36 +0000 (15:25 +0000)
Also, back-patch fix into back branches.

src/interfaces/libpq/fe-misc.c

index 5008d5bf6325cc0b852e1e2362f02105ad070ae0..e6dcbd24dc4b56a6a37b0be590fbe15caa2c7c10 100644 (file)
@@ -25,7 +25,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.85.2.1 2003/08/04 17:25:28 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.85.2.2 2005/07/08 15:25:36 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -920,8 +920,16 @@ libpq_gettext(const char *msgid)
 
    if (!already_bound)
    {
+       /* dgettext() preserves errno, but bindtextdomain() doesn't */
+       int     save_errno = errno;
+
        already_bound = 1;
        bindtextdomain("libpq", LOCALEDIR);
+#ifdef WIN32
+       SetLastError(save_errno);
+#else
+       errno = save_errno;
+#endif
    }
 
    return dgettext("libpq", msgid);