]> granicus.if.org Git - postgresql/commitdiff
Cope with versions of vsnprintf() written by people who
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 8 Sep 1999 16:31:38 +0000 (16:31 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 8 Sep 1999 16:31:38 +0000 (16:31 +0000)
don't read man pages...

src/backend/lib/stringinfo.c

index d25a2a00a79d1f436b7d435672e299e9838e24d9..94cb8040604ceca4dce42d1bbc2b41c494c46ab7 100644 (file)
@@ -8,7 +8,7 @@
  *
  * Copyright (c) 1994, Regents of the University of California
  *
- *       $Id: stringinfo.c,v 1.21 1999/08/31 01:28:25 tgl Exp $
+ *       $Id: stringinfo.c,v 1.22 1999/09/08 16:31:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -121,7 +121,12 @@ appendStringInfo(StringInfo str, const char *fmt,...)
                        nprinted = vsnprintf(str->data + str->len, avail,
                                                                 fmt, args);
                        va_end(args);
-                       if (nprinted < avail-1)
+                       /*
+                        * Note: some versions of vsnprintf return the number of chars
+                        * actually stored, but at least one returns -1 on failure.
+                        * Be conservative about believing whether the print worked.
+                        */
+                       if (nprinted >= 0 && nprinted < avail-1)
                        {
                                /* Success.  Note nprinted does not include trailing null. */
                                str->len += nprinted;