summaryrefslogtreecommitdiffstats
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
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.
-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;