From b00e732483f413217639517f5964e1c518821041 Mon Sep 17 00:00:00 2001 From: dgp Date: Thu, 2 Jul 2015 13:46:56 +0000 Subject: Plug leak of two mp_ints. --- generic/tclStrToD.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c index 66640ea..2c34866 100644 --- a/generic/tclStrToD.c +++ b/generic/tclStrToD.c @@ -1922,6 +1922,8 @@ RefineApproximation( rteSignificand = frexp(approxResult, &rteExponent); rteSigWide = (Tcl_WideInt) ldexp(rteSignificand, FP_PRECISION); if ((rteSigWide & 1) == 0) { + mp_clear(&twoMd); + mp_clear(&twoMv); return approxResult; } } -- cgit v0.12 From 4ce2c3e6e7ca0a108a6b0a502f9349ce319e2c55 Mon Sep 17 00:00:00 2001 From: dgp Date: Sun, 5 Jul 2015 16:52:27 +0000 Subject: [a0ece9d6d4] The cmd field of a CmdFrame when non-NULL must point within the string of the corresponding codePtr->source. --- generic/tclExecute.c | 1 - tests/execute.test | 9 +++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 38f11f2..d12a25c 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -9904,7 +9904,6 @@ TclGetSourceFromFrame( cfPtr->cmdObj = Tcl_NewStringObj(cfPtr->cmd, cfPtr->len); } else { cfPtr->cmdObj = Tcl_NewListObj(objc, objv); - cfPtr->cmd = Tcl_GetStringFromObj(cfPtr->cmdObj, &cfPtr->len); } Tcl_IncrRefCount(cfPtr->cmdObj); } diff --git a/tests/execute.test b/tests/execute.test index aaf4bc0..9a2ffbd 100644 --- a/tests/execute.test +++ b/tests/execute.test @@ -1057,6 +1057,15 @@ test execute-11.2 {Bug 268b23df11} -setup { rename crash {} rename zero {} } -result 0 +test execute-11.3 {Bug a0ece9d6d4} -setup { + proc crash {} {expr {rand()}} + trace add execution crash enterstep {apply {args {info frame -2}}} +} -body { + string is double [crash] +} -cleanup { + trace remove execution crash enterstep {apply {args {info frame -2}}} + rename crash {} +} -result 1 # cleanup if {[info commands testobj] != {}} { -- cgit v0.12