From b789bd9bde8fcc02d873ec79094b914aa2627fbc Mon Sep 17 00:00:00 2001 From: dgp Date: Wed, 17 Sep 2003 23:45:05 +0000 Subject: * generic/tkImage.c: Stopped [image create] from generating an * tests/image.test: image command name that would overwrite an existing command name. Thanks to Michael Schlenker. [Bug 808039]. --- ChangeLog | 6 ++++++ generic/tkImage.c | 11 +++++++---- tests/image.test | 14 +++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1536d67..2e46497 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-09-17 Don Porter + + * generic/tkImage.c: Stopped [image create] from generating an + * tests/image.test: image command name that would overwrite an + existing command name. Thanks to Michael Schlenker. [Bug 808039]. + 2003-08-19 Joe English * generic/tkPanedWindow.c(PanedWindowWorldChanged): Set window background from the -background resource. diff --git a/generic/tkImage.c b/generic/tkImage.c index 78e2a56..d813c96 100644 --- a/generic/tkImage.c +++ b/generic/tkImage.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: tkImage.c,v 1.19.2.1 2003/07/07 09:43:01 dkf Exp $ + * RCS: @(#) $Id: tkImage.c,v 1.19.2.2 2003/09/17 23:45:05 dgp Exp $ */ #include "tkInt.h" @@ -233,9 +233,12 @@ Tk_ImageObjCmd(clientData, interp, objc, objv) */ if ((objc == 3) || (*(arg = Tcl_GetString(objv[3])) == '-')) { - dispPtr->imageId++; - sprintf(idString, "image%d", dispPtr->imageId); - name = idString; + Tcl_CmdInfo dummy; + do { + dispPtr->imageId++; + sprintf(idString, "image%d", dispPtr->imageId); + name = idString; + } while (Tcl_GetCommandInfo(interp, name, &dummy) != 0); firstOption = 3; } else { TkWindow *topWin; diff --git a/tests/image.test b/tests/image.test index dd5d3dd..7e35f9a 100644 --- a/tests/image.test +++ b/tests/image.test @@ -7,7 +7,7 @@ # Copyright (c) 1998-1999 by Scriptics Corporation. # All rights reserved. # -# RCS: @(#) $Id: image.test,v 1.8 2003/01/22 14:32:59 dkf Exp $ +# RCS: @(#) $Id: image.test,v 1.8.2.1 2003/09/17 23:45:05 dgp Exp $ package require tcltest 2.1 namespace import -force tcltest::configure @@ -93,6 +93,18 @@ test image-1.11 {Tk_ImageCmd procedure, "create" option with same name as main w removeFile script set x } {0 {1 {images may not be named the same as the main window}}} +test image-1.11 {Tk_ImageCmd, "create" option: do not generated command name in use} -setup { + set i [image create bitmap] + regexp {^image(\d+)$} $i -> serial + incr serial + proc image$serial {} {return works} + set j [image create bitmap] +} -body { + image$serial +} -cleanup { + rename image$serial {} + image delete $i $j +} -result works test image-2.1 {Tk_ImageCmd procedure, "delete" option} { list [catch {image delete} msg] $msg -- cgit v0.12