Cope with versions of vsnprintf() written by people who
authorTom Lane
Wed, 8 Sep 1999 16:31:38 +0000 (16:31 +0000)
committerTom Lane
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;