From: Roger Sayle Date: Sun, 15 Feb 2004 14:27:14 +0000 (+0000) Subject: re PR fortran/14129 ([g77] gcc/f/lex.c buffer size limitation.) X-Git-Tag: releases/gcc-4.0.0~10105 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb264fec4885521a881dca835f2794636870a10c;p=thirdparty%2Fgcc.git re PR fortran/14129 ([g77] gcc/f/lex.c buffer size limitation.) PR fortran/14129 * lex.c (ffelex_cfelex_): Avoid calling xrealloc on a local stack allocated array. From-SVN: r77849 --- diff --git a/gcc/f/ChangeLog b/gcc/f/ChangeLog index 2677242a6a24..9893e5287bf4 100644 --- a/gcc/f/ChangeLog +++ b/gcc/f/ChangeLog @@ -1,3 +1,9 @@ +2004-02-15 Roger Sayle + + PR fortran/14129 + * lex.c (ffelex_cfelex_): Avoid calling xrealloc on a local stack + allocated array. + 2004-02-03 Kazu Hirata * com.c (ffecom_member_phase2_): Use gen_rtx_MEM instead of diff --git a/gcc/f/lex.c b/gcc/f/lex.c index 3be91b682988..8475d2ff2c37 100644 --- a/gcc/f/lex.c +++ b/gcc/f/lex.c @@ -694,7 +694,13 @@ ffelex_cfelex_ (ffelexToken *xtoken, FILE *finput, int c) register unsigned bytes_used = (p - q); buffer_length *= 2; - q = xrealloc (q, buffer_length); + if (q == &buff[0]) + { + q = xmalloc (buffer_length); + memcpy (q, buff, bytes_used); + } + else + q = xrealloc (q, buffer_length); p = &q[bytes_used]; r = &q[buffer_length]; } @@ -754,7 +760,13 @@ ffelex_cfelex_ (ffelexToken *xtoken, FILE *finput, int c) register unsigned bytes_used = (p - q); buffer_length = bytes_used * 2; - q = xrealloc (q, buffer_length); + if (q == &buff[0]) + { + q = xmalloc (buffer_length); + memcpy (q, buff, bytes_used); + } + else + q = xrealloc (q, buffer_length); p = &q[bytes_used]; r = &q[buffer_length]; }