From 564f061beb3162b0452e3f5a229484ab15e8162e Mon Sep 17 00:00:00 2001 From: Daniele Varrazzo Date: Tue, 10 Mar 2015 11:48:16 +0000 Subject: [PATCH] Use the right appendStringInfoVA interface pgut version renamed to avoid confusion with the server version. (I wonder why there is such a duplication of interfaces and implementations there though...) --- bin/pgut/pgut.c | 8 ++++---- bin/pgut/pgut.h | 2 +- lib/pgut/pgut-spi.c | 9 +++++++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/bin/pgut/pgut.c b/bin/pgut/pgut.c index 04b8459..52a6e21 100644 --- a/bin/pgut/pgut.c +++ b/bin/pgut/pgut.c @@ -840,7 +840,7 @@ elog(int elevel, const char *fmt, ...) do { va_start(args, fmt); - ok = appendStringInfoVA(&edata->msg, fmt, args); + ok = pgut_appendStringInfoVA(&edata->msg, fmt, args); va_end(args); } while (!ok); len = strlen(fmt); @@ -1005,7 +1005,7 @@ errmsg(const char *fmt,...) do { va_start(args, fmt); - ok = appendStringInfoVA(&edata->msg, fmt, args); + ok = pgut_appendStringInfoVA(&edata->msg, fmt, args); va_end(args); } while (!ok); len = strlen(fmt); @@ -1026,7 +1026,7 @@ errdetail(const char *fmt,...) do { va_start(args, fmt); - ok = appendStringInfoVA(&edata->detail, fmt, args); + ok = pgut_appendStringInfoVA(&edata->detail, fmt, args); va_end(args); } while (!ok); trimStringBuffer(&edata->detail); @@ -1212,7 +1212,7 @@ exit_or_abort(int exitcode) * unlike the server code, this function automatically extend the buffer. */ bool -appendStringInfoVA(StringInfo str, const char *fmt, va_list args) +pgut_appendStringInfoVA(StringInfo str, const char *fmt, va_list args) { size_t avail; int nprinted; diff --git a/bin/pgut/pgut.h b/bin/pgut/pgut.h index e297242..ca1f381 100644 --- a/bin/pgut/pgut.h +++ b/bin/pgut/pgut.h @@ -150,7 +150,7 @@ extern void CHECK_FOR_INTERRUPTS(void); #define appendStringInfoChar appendPQExpBufferChar #define appendBinaryStringInfo appendBinaryPQExpBuffer -extern bool appendStringInfoVA(StringInfo str, const char *fmt, va_list args) +extern bool pgut_appendStringInfoVA(StringInfo str, const char *fmt, va_list args) __attribute__((format(printf, 2, 0))); extern int appendStringInfoFile(StringInfo str, FILE *fp); extern int appendStringInfoFd(StringInfo str, int fd); diff --git a/lib/pgut/pgut-spi.c b/lib/pgut/pgut-spi.c index a234b84..ed26260 100644 --- a/lib/pgut/pgut-spi.c +++ b/lib/pgut/pgut-spi.c @@ -29,11 +29,20 @@ termStringInfo(StringInfo str) static void appendStringInfoVA_s(StringInfo str, const char *fmt, va_list args) { +#if PG_VERSION_NUM >= 90400 + int needed; + while ((needed = appendStringInfoVA(str, fmt, args)) > 0) + { + /* Double the buffer size and try again. */ + enlargeStringInfo(str, needed); + } +#else while (!appendStringInfoVA(str, fmt, args)) { /* Double the buffer size and try again. */ enlargeStringInfo(str, str->maxlen); } +#endif } /* simple execute */