From fd1e5aba83ef2efb0a9c5b5d5eeddb3533266ccb Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Sun, 19 Oct 2003 20:59:02 +0000 Subject: (vasnprintf): Work around losing snprintf on e.g. HPUX 10.20. --- lib/vasnprintf.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/vasnprintf.c') diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index 9c701f1c6..f416c1240 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -707,6 +707,22 @@ vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) p[1] = '\0'; continue; } + else if (retcount < 0) + { + /* The system's snprintf is sorely deficient: + it doesn't recognize the `%n' directive, and it + returns -1 (rather than the length that would + have been required) when the buffer is too small. + This is the case at with least HPUX 10.20. + Double the memory allocation. */ + size_t n = allocated; + if (n < 2 * allocated) + { + n = 2 * allocated; + ENSURE_ALLOCATION (n); + continue; + } + } count = retcount; } #endif -- cgit v1.2.3-54-g00ecf