From 729b47be45a702ff78180857ffeaa1e7ce2c0de5 Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 5 Apr 2006 15:16:46 +0000 Subject: * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty strings to be matched by the Tcl_GetIndexFromObj machinery, in the same manner as any other key. [Bug 1464039] --- ChangeLog | 4 ++-- generic/tclIndexObj.c | 10 +++------- tests/binary.test | 6 +++--- tests/indexObj.test | 7 +++++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 17d4313..10a3722 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,8 @@ 2006-04-05 Donal K. Fellows * generic/tclIndexObj.c (Tcl_GetIndexFromObjStruct): Allow empty - strings to be matched by the Tcl_GetIndexFromObj machinery, but only - ever exactly. [Bug 1464039] + strings to be matched by the Tcl_GetIndexFromObj machinery, in + the same manner as any other key. [Bug 1464039] 2006-04-04 Don Porter diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c index 7bc046d..f22e7d4 100644 --- a/generic/tclIndexObj.c +++ b/generic/tclIndexObj.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.3 2006/04/05 13:20:09 dkf Exp $ + * RCS: @(#) $Id: tclIndexObj.c,v 1.16.2.4 2006/04/05 15:17:05 dgp Exp $ */ #include "tclInt.h" @@ -227,13 +227,9 @@ Tcl_GetIndexFromObjStruct(interp, objPtr, tablePtr, offset, msg, flags, } } /* - * Check if we were instructed to disallow abbreviations. Note that we do - * not allow the empty string as an abbreviation of anything; it is only - * processed by this function as a non-error case if the table of strings - * has an entry in it that is itself an empty string. This only matters in - * the case where the table has a singleton entry. + * Check if we were instructed to disallow abbreviations. */ - if ((flags & TCL_EXACT) || (key[0] == '\0') || (numAbbrev != 1)) { + if ((flags & TCL_EXACT) || (numAbbrev != 1)) { goto error; } diff --git a/tests/binary.test b/tests/binary.test index f792dd8..fb137db 100644 --- a/tests/binary.test +++ b/tests/binary.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: binary.test,v 1.11.2.3 2005/09/27 15:44:13 dkf Exp $ +# RCS: @(#) $Id: binary.test,v 1.11.2.4 2006/04/05 15:17:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1460,9 +1460,9 @@ test binary-41.8 {ScanNumber: word alignment} {nonPortable pcOnly} { } {2 1 1.6} test binary-42.1 {Tcl_BinaryObjCmd: bad arguments} {} { - catch {binary ""} result + catch {binary ?} result set result -} {bad option "": must be format or scan} +} {bad option "?": must be format or scan} # Wide int (guaranteed at least 64-bit) handling test binary-43.1 {Tcl_BinaryObjCmd: format wide int} {} { diff --git a/tests/indexObj.test b/tests/indexObj.test index 168b225..0d8a21d 100644 --- a/tests/indexObj.test +++ b/tests/indexObj.test @@ -8,7 +8,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: indexObj.test,v 1.7.18.2 2006/04/05 13:20:14 dkf Exp $ +# RCS: @(#) $Id: indexObj.test,v 1.7.18.3 2006/04/05 15:17:06 dgp Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -72,8 +72,11 @@ test indexObj-2.7 {exact match of empty values} { list [catch {testindexobj 1 1 {} a b c} msg] $msg } {1 {ambiguous token "": must be a, b, or c}} test indexObj-2.8 {exact match of empty values: singleton case} { - list [catch {testindexobj 1 1 {} a} msg] $msg + list [catch {testindexobj 1 0 {} a} msg] $msg } {1 {bad token "": must be a}} +test indexObj-2.9 {non-exact match of empty values: singleton case} { + testindexobj 1 1 {} a +} 0 test indexObj-3.1 {cache result to skip next lookup} { testindexobj check 42 -- cgit v0.12