X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=utils%2Fhp2ps%2FHpFile.c;h=787a2682294004abbb86236f7ad24c0ce3b1794c;hb=9de55417c7e397c7293df4bd6c2f60307acb3611;hp=9db94977dfa6cd6590f4b01a91e5e519cce9ce9d;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/utils/hp2ps/HpFile.c b/utils/hp2ps/HpFile.c index 9db9497..787a268 100644 --- a/utils/hp2ps/HpFile.c +++ b/utils/hp2ps/HpFile.c @@ -404,15 +404,27 @@ 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 (ch == EOF) { + Error("%s, line %d: EOF when expecting \"", hpfile, linenum, ch); + } + else if (i == stringbuffersize - 1) { + stringbuffersize = 2 * stringbuffersize; + stringbuffer = xrealloc(stringbuffer, stringbuffersize); + } + stringbuffer[ i++ ] = ch; + ch = getc(infp); } stringbuffer[i] = '\0';