diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2007-12-05 14:54:07 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2007-12-05 14:54:07 (GMT) |
commit | b76dea45ad1f5edfce3d912f837877311368f132 (patch) | |
tree | 71dc8c9a29b4aba101a64be04736efb7d8b49b67 | |
parent | ae4f33832403033f21b4eb353cd9403e070e111d (diff) | |
download | tcl-b76dea45ad1f5edfce3d912f837877311368f132.zip tcl-b76dea45ad1f5edfce3d912f837877311368f132.tar.gz tcl-b76dea45ad1f5edfce3d912f837877311368f132.tar.bz2 |
Prevent shimmering crash in [lsearch] when -exact and -integer/-real are
mixed. [Bug 1844789]
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | generic/tclCmdIL.c | 4 | ||||
-rw-r--r-- | tests/lsearch.test | 11 |
3 files changed, 18 insertions, 2 deletions
@@ -1,3 +1,8 @@ +2007-12-05 Donal K. Fellows <donal.k.fellows@man.ac.uk> + + * generic/tclCmdIL.c (Tcl_LsearchObjCmd): Prevent shimmering crash + when -exact and -integer/-real are mixed. [Bug 1844789] + 2007-11-28 Jeff Hobbs <jeffh@ActiveState.com> * win/tclWinSock.c (Tcl_GetHostName): update to previous fix to diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 85e51d0..eae2d10 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -15,7 +15,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.11 2007/03/10 14:57:38 dkf Exp $ + * RCS: @(#) $Id: tclCmdIL.c,v 1.47.2.12 2007/12/05 14:54:08 dkf Exp $ */ #include "tclInt.h" @@ -3374,12 +3374,14 @@ Tcl_LsearchObjCmd(clientData, interp, objc, objv) if (result != TCL_OK) { return result; } + Tcl_ListObjGetElements(NULL, objv[objc - 2], &listc, &listv); break; case REAL: result = Tcl_GetDoubleFromObj(interp, patObj, &patDouble); if (result != TCL_OK) { return result; } + Tcl_ListObjGetElements(NULL, objv[objc - 2], &listc, &listv); break; } } else { diff --git a/tests/lsearch.test b/tests/lsearch.test index 86884c4..51d2176 100644 --- a/tests/lsearch.test +++ b/tests/lsearch.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: lsearch.test,v 1.10.2.3 2005/12/09 14:39:25 dkf Exp $ +# RCS: @(#) $Id: lsearch.test,v 1.10.2.4 2007/12/05 14:54:08 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -366,6 +366,15 @@ test lsearch-16.2 {lsearch -regexp allows internal backrefs} { lsearch -regexp {a aa b} {(.)\1} } 1 +test lsearch-21.1 {lsearch shimmering crash} { + set x 0 + lsearch -exact -integer $x $x +} 0 +test lsearch-21.2 {lsearch shimmering crash} { + set x 0.5 + lsearch -exact -real $x $x +} 0 + # cleanup catch {unset res} catch {unset increasingIntegers} |