(struct control): Remove fastmap member.
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Aug 2006 20:53:32 +0000 (20:53 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 10 Aug 2006 20:53:32 +0000 (20:53 +0000)
(extract_regexp): Allocate fastmap separately, since otherwise
it might move due to a realloc.

ChangeLog
src/csplit.c

index a95ee39..6fc73bc 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-08-10  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/csplit.c (struct control): Remove fastmap member.
+       (extract_regexp): Allocate fastmap separately, since otherwise
+       it might move due to a realloc.  This fixes a bug that led
+       to a core dump on 64-bit sparc Solaris 10 (Sun Studio 10).
+
 2006-08-10  Jim Meyering  <jim@meyering.net>
 
        * tests/ls/stat-dtype: If "." is tmpfs, skip this test unless uname -s
index 1d01198..07bcb20 100644 (file)
@@ -69,7 +69,6 @@ struct control
   bool ignore;                 /* If true, produce no output (for regexp). */
   bool regexpr;                        /* True if regular expression was used. */
   struct re_pattern_buffer re_compiled;        /* Compiled regular expression. */
-  char fastmap[UCHAR_MAX + 1]; /* Fastmap for RE_COMPILED.  */
 };
 
 /* Initial size of data area in buffers. */
@@ -1119,7 +1118,7 @@ extract_regexp (int argnum, bool ignore, char const *str)
   p->regexpr = true;
   p->re_compiled.buffer = NULL;
   p->re_compiled.allocated = 0;
-  p->re_compiled.fastmap = p->fastmap;
+  p->re_compiled.fastmap = xmalloc (UCHAR_MAX + 1);
   p->re_compiled.translate = NULL;
   re_syntax_options =
     RE_SYNTAX_POSIX_BASIC & ~RE_CONTEXT_INVALID_DUP & ~RE_NO_EMPTY_RANGES;