From 52584954ef6bd07031adfce9dd4c3a5d564c878f Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Wed, 5 May 2010 19:19:21 +0000 Subject: [PATCH] Fix hp2ps when the .hp file has large string literals --- utils/hp2ps/HpFile.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/utils/hp2ps/HpFile.c b/utils/hp2ps/HpFile.c index 9db9497..1f2bf2d 100644 --- a/utils/hp2ps/HpFile.c +++ b/utils/hp2ps/HpFile.c @@ -404,15 +404,24 @@ GetString(infp) FILE *infp; { unsigned int i; - char stringbuffer[5000]; + char *stringbuffer; + size_t stringbuffersize; ASSERT(ch == '\"'); + stringbuffersize = 5000; + stringbuffer = xmalloc(stringbuffersize); + ch = getc(infp); /* skip the '\"' that begins the string */ - for (i = 0; i < (sizeof stringbuffer)-1 && ch != '\"'; i++) { - stringbuffer[ i ] = ch; - ch = getc(infp); + i = 0; + while (ch != '\"') { + if (i == stringbuffersize - 1) { + stringbuffersize = 2 * stringbuffersize; + stringbuffer = xrealloc(stringbuffer, stringbuffersize); + } + stringbuffer[ i++ ] = ch; + ch = getc(infp); } stringbuffer[i] = '\0'; -- 1.7.10.4