summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tkBind.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/generic/tkBind.c b/generic/tkBind.c
index 71e5db1..d06d246 100644
--- a/generic/tkBind.c
+++ b/generic/tkBind.c
@@ -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: tkBind.c,v 1.14 2000/11/22 01:49:37 ericm Exp $
+ * RCS: @(#) $Id: tkBind.c,v 1.15 2001/03/30 21:52:28 hobbs Exp $
*/
#include "tkPort.h"
@@ -3716,7 +3716,7 @@ NameToWindow(interp, mainWin, objPtr, tkwinPtr)
char *name;
Tk_Window tkwin;
int id;
-
+
name = Tcl_GetStringFromObj(objPtr, NULL);
if (name[0] == '.') {
tkwin = Tk_NameToWindow(interp, name, mainWin);
@@ -3725,12 +3725,18 @@ NameToWindow(interp, mainWin, objPtr, tkwinPtr)
}
*tkwinPtr = tkwin;
} else {
- if (TkpScanWindowId(NULL, name, &id) != TCL_OK) {
+ /*
+ * Check for the winPtr being valid, even if it looks ok to
+ * TkpScanWindowId. [Bug #411307]
+ */
+
+ if ((TkpScanWindowId(NULL, name, &id) != TCL_OK) ||
+ ((*tkwinPtr = Tk_IdToWindow(Tk_Display(mainWin), (Window) id))
+ == NULL)) {
Tcl_AppendResult(interp, "bad window name/identifier \"",
name, "\"", (char *) NULL);
return TCL_ERROR;
}
- *tkwinPtr = Tk_IdToWindow(Tk_Display(mainWin), (Window) id);
}
return TCL_OK;
}