summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2015-08-17 18:23:20 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2015-08-17 18:23:20 (GMT)
commit68e5d7f9d97ea05155692dd5748468e6edbc1a63 (patch)
treeb408028784093b73312ff7c8209a68ff1d064ba2 /generic
parentad86ffae8c9504f573b41cb5a09d74da963ccfba (diff)
parent2ef36c8edb60b8da26aeb9947f6d2cdd1d4bf6c1 (diff)
downloadtcl-68e5d7f9d97ea05155692dd5748468e6edbc1a63.zip
tcl-68e5d7f9d97ea05155692dd5748468e6edbc1a63.tar.gz
tcl-68e5d7f9d97ea05155692dd5748468e6edbc1a63.tar.bz2
[818a1a51e4] Apply fixes from Andreas Seltenreich (reported to us by Tom Lane) for handling low memory situations. Should not be reachable in Tcl due to ckalloc() panic policy.
Diffstat (limited to 'generic')
-rw-r--r--generic/regc_nfa.c1
-rw-r--r--generic/regcomp.c3
2 files changed, 4 insertions, 0 deletions
diff --git a/generic/regc_nfa.c b/generic/regc_nfa.c
index 1f0583e..9361d34 100644
--- a/generic/regc_nfa.c
+++ b/generic/regc_nfa.c
@@ -49,6 +49,7 @@ newnfa(
nfa = (struct nfa *) MALLOC(sizeof(struct nfa));
if (nfa == NULL) {
+ ERR(REG_ESPACE);
return NULL;
}
diff --git a/generic/regcomp.c b/generic/regcomp.c
index 7ca4346..4f0c139 100644
--- a/generic/regcomp.c
+++ b/generic/regcomp.c
@@ -982,6 +982,7 @@ parseqatom(
NOERR();
assert(v->nextvalue > 0);
atom = subre(v, 'b', BACKR, lp, rp);
+ NOERR();
subno = v->nextvalue;
atom->subno = subno;
EMPTYARC(lp, rp); /* temporarily, so there's something */
@@ -1129,6 +1130,7 @@ parseqatom(
*/
t = subre(v, '.', COMBINE(qprefer, atom->flags), lp, rp);
+ NOERR();
t->left = atom;
atomp = &t->left;
@@ -1142,6 +1144,7 @@ parseqatom(
assert(top->op == '=' && top->left == NULL && top->right == NULL);
top->left = subre(v, '=', top->flags, top->begin, lp);
+ NOERR();
top->op = '.';
top->right = t;