From 729b47be45a702ff78180857ffeaa1e7ce2c0de5 Mon Sep 17 00:00:00 2001
From: dgp <dgp@users.sourceforge.net>
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  <donal.k.fellows@man.ac.uk>
 
 	* 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  <dgp@users.sourceforge.net>
 
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