Make libpq_gettext save and restore errno in a Windows-compatible way.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Jul 2005 15:25:46 +0000 (15:25 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 8 Jul 2005 15:25:46 +0000 (15:25 +0000)
Also, back-patch fix into back branches.

src/interfaces/libpq/fe-misc.c

index 7e166f4a38ff017013c1c75f3d8085529183549a..45634a1286afa1e6142a1c10be36cf55cf435355 100644 (file)
@@ -25,7 +25,7 @@
  *
  *
  * IDENTIFICATION
- *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.65 2001/12/03 00:28:24 tgl Exp $
+ *   $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.65.2.1 2005/07/08 15:25:46 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -844,8 +844,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);