summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tclVar.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c
index d7393e4..9f7595c 100644
--- a/generic/tclVar.c
+++ b/generic/tclVar.c
@@ -16,7 +16,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclVar.c,v 1.157 2007/11/18 21:59:25 dkf Exp $
+ * RCS: @(#) $Id: tclVar.c,v 1.158 2007/11/23 21:19:50 hobbs Exp $
*/
#include "tclInt.h"
@@ -3048,9 +3048,9 @@ Tcl_ArrayObjCmd(
case ARRAY_NAMES: {
Tcl_HashSearch search;
Var *varPtr2;
- char *pattern = NULL;
+ char *pattern;
char *name;
- Tcl_Obj *namePtr, *resultPtr;
+ Tcl_Obj *namePtr, *resultPtr, *patternPtr;
int mode, matched = 0;
static const char *options[] = {
"-exact", "-glob", "-regexp", NULL
@@ -3067,18 +3067,23 @@ Tcl_ArrayObjCmd(
return TCL_OK;
}
if (objc == 4) {
- pattern = TclGetString(objv[3]);
+ patternPtr = objv[3];
+ pattern = TclGetString(patternPtr);
} else if (objc == 5) {
- pattern = TclGetString(objv[4]);
+ patternPtr = objv[4];
+ pattern = TclGetString(patternPtr);
if (Tcl_GetIndexFromObj(interp, objv[3], options, "option", 0,
&mode) != TCL_OK) {
return TCL_ERROR;
}
+ } else {
+ patternPtr = NULL;
+ pattern = NULL;
}
TclNewObj(resultPtr);
if (((enum options) mode)==OPT_GLOB && pattern!=NULL &&
TclMatchIsTrivial(pattern)) {
- varPtr2 = VarHashFindVar(varPtr->value.tablePtr, objv[3]);
+ varPtr2 = VarHashFindVar(varPtr->value.tablePtr, patternPtr);
if ((varPtr2 != NULL) && !TclIsVarUndefined(varPtr2)) {
result = Tcl_ListObjAppendElement(interp, resultPtr,
VarHashGetKey(varPtr2));