aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jim-regexp.c6
-rw-r--r--regtest.tcl10
2 files changed, 12 insertions, 4 deletions
diff --git a/jim-regexp.c b/jim-regexp.c
index 702fdfe..8e497a2 100644
--- a/jim-regexp.c
+++ b/jim-regexp.c
@@ -80,10 +80,6 @@ static regex_t *SetRegexpFromAny(Jim_Interp *interp, Jim_Obj *objPtr, unsigned f
}
/* Not a regexp or the flags do not match */
- if (objPtr->typePtr == &regexpObjType) {
- FreeRegexpInternalRep(interp, objPtr);
- objPtr->typePtr = NULL;
- }
/* Get the string representation */
pattern = Jim_String(objPtr);
@@ -99,6 +95,8 @@ static regex_t *SetRegexpFromAny(Jim_Interp *interp, Jim_Obj *objPtr, unsigned f
return NULL;
}
+ Jim_FreeIntRep(interp, objPtr);
+
objPtr->typePtr = &regexpObjType;
objPtr->internalRep.regexpValue.flags = flags;
objPtr->internalRep.regexpValue.compre = compre;
diff --git a/regtest.tcl b/regtest.tcl
index 66c20ca..de796d9 100644
--- a/regtest.tcl
+++ b/regtest.tcl
@@ -143,6 +143,16 @@ eval $x
lappend x b
puts "TEST 22 PASSED"
+# REGTEST 23
+# 27 July 2011 - unfreed objects on exit
+catch {
+ set x abc
+ subst $x
+ regexp $x $x
+}
+# Actually, the test passes if no objects leaked on exit
+puts "TEST 23 PASSED"
+
# TAKE THE FOLLOWING puts AS LAST LINE
puts "--- ALL TESTS PASSED ---"