This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hi! info regex says: `buffer' `allocated' If you want `re_compile_pattern' to allocate memory for the compiled pattern, set both of these to zero. If you have an existing block of memory (allocated with `malloc') you want Regex to use, set `buffer' to its address and `allocated' to its size (in bytes). `re_compile_pattern' uses `realloc' to extend the space for the compiled pattern as necessary. >From this, I conclude applications are doing nothing wrong if they do: struct re_compile_pattern re; memset (&re, 0, sizeof(re)); re.buffer = malloc (4096); re.allocated = 4096; re_compile_pattern ("^\\(.*\\)$", 8, &re); (there is no word about calloc anywhere), yet the new regex code depends on it being zeroed (at least for those fields not initialized by init_dfa). It worked just fine with the old regex. 2002-07-04 Jakub Jelinek <jakub@redhat.com> * posix/regcomp.c (re_compile_internal): Move clearing of dfa... (init_dfa): ...here. --- libc/posix/regcomp.c.jj Wed Jun 5 10:27:39 2002 +++ libc/posix/regcomp.c Thu Jul 4 14:07:57 2002 @@ -724,7 +724,6 @@ re_compile_internal (preg, pattern, leng dfa = re_realloc (preg->buffer, re_dfa_t, 1); if (dfa == NULL) return REG_ESPACE; - memset (dfa, '\0', sizeof (re_dfa_t)); preg->allocated = sizeof (re_dfa_t); } preg->buffer = (unsigned char *) dfa; @@ -781,6 +780,9 @@ init_dfa (dfa, pat_len) int pat_len; { int table_size; + + memset (dfa, '\0', sizeof (re_dfa_t)); + dfa->nodes_alloc = pat_len + 1; dfa->nodes = re_malloc (re_token_t, dfa->nodes_alloc); Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |