summaryrefslogtreecommitdiff
path: root/re.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2010-07-16 14:55:10 +0300
committerArnold D. Robbins <arnold@skeeve.com>2010-07-16 14:55:10 +0300
commit00ef0423acd97cb964a2bae54c93a03a8ab50e5e (patch)
tree2864426773f537f912db1bd716c27b713c5f7dcf /re.c
parent3ba50a15ebd976f7a88393e2e45dc14b6478b9a9 (diff)
downloadgawk-00ef0423acd97cb964a2bae54c93a03a8ab50e5e.tar.gz
Move to 3.1.8.gawk-3.1.8
Diffstat (limited to 're.c')
-rw-r--r--re.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/re.c b/re.c
index 87888c59..43e5853f 100644
--- a/re.c
+++ b/re.c
@@ -3,7 +3,7 @@
*/
/*
- * Copyright (C) 1991-2009 the Free Software Foundation, Inc.
+ * Copyright (C) 1991-2010 the Free Software Foundation, Inc.
*
* This file is part of GAWK, the GNU implementation of the
* AWK Programming Language.
@@ -112,7 +112,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
* literally in re's, so escape regexp
* metacharacters.
*/
- if (do_traditional && ! do_posix && (ISDIGIT(c) || c == 'x')
+ if (do_traditional && ! do_posix && (isdigit(c) || c == 'x')
&& strchr("()|*+?.^$\\[]", c2) != NULL)
*dest++ = '\\';
*dest++ = (char) c2;
@@ -150,6 +150,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
*dest = '\0' ; /* Only necessary if we print dest ? */
emalloc(rp, Regexp *, sizeof(*rp), "make_regexp");
memset((char *) rp, 0, sizeof(*rp));
+ rp->dfareg = dfaalloc();
rp->pat.allocated = 0; /* regex will allocate the buffer */
emalloc(rp->pat.fastmap, char *, 256, "make_regexp");
@@ -191,7 +192,7 @@ make_regexp(const char *s, size_t len, int ignorecase, int dfa)
/* gack. this must be done *after* re_compile_pattern */
rp->pat.newline_anchor = FALSE; /* don't get \n in middle of string */
if (dfa && ! no_dfa) {
- dfacomp(temp, len, &(rp->dfareg), TRUE);
+ dfacomp(temp, len, rp->dfareg, TRUE);
rp->dfa = TRUE;
} else
rp->dfa = FALSE;
@@ -244,7 +245,7 @@ research(Regexp *rp, register char *str, int start,
* text. So we just save and restore the character.
*/
save = str[start+len];
- ret = dfaexec(&(rp->dfareg), str+start, str+start+len, TRUE,
+ ret = dfaexec(rp->dfareg, str+start, str+start+len, TRUE,
&count, &try_backref);
str[start+len] = save;
}
@@ -284,8 +285,10 @@ refree(Regexp *rp)
free(rp->regs.start);
if (rp->regs.end)
free(rp->regs.end);
- if (rp->dfa)
- dfafree(&(rp->dfareg));
+ if (rp->dfa) {
+ dfafree(rp->dfareg);
+ free(rp->dfareg);
+ }
free(rp);
}
@@ -369,9 +372,6 @@ avoid_dfa(NODE *re, char *str, size_t len)
{
char *end;
- if (re->re_reg->dfareg.broken)
- return TRUE;
-
if (! re->re_reg->has_anchor)
return FALSE;