Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Eliminate all usage of deprecated Tcl_EvalObj, Tcl_GlobalEval and Tcl_GlobalEvalObj functions. Add [file normalize] to pkgIndex.tcl, in order to prevent '..' in file paths. Remove unused TCLPATCHL, it should be ".0" for all final releases. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-4-branch |
Files: | files | file ages | folders |
SHA1: |
202603bf2bfee83e288d8f893a4a113e |
User & Date: | jan.nijtmans 2013-01-11 09:51:01 |
Context
2013-01-11
| ||
11:10 | Eliminate all usage of deprecated Tcl_EvalObj, Tcl_GlobalEval and Tcl_GlobalEvalObj functions. Add [file normalize] to pkgIndex.tcl, in order to prevent '..' in file paths. Remove unused TCLPATCHL, it should be ".0" for all final releases. Enable tk.h to be used with higher tcl.h versions which might lack _ANSI_ARGS_ check-in: 6445ecee user: jan.nijtmans tags: core-8-5-branch | |
10:28 | wrong end brace location check-in: af4ada42 user: jan.nijtmans tags: core-8-4-branch | |
09:51 | Eliminate all usage of deprecated Tcl_EvalObj, Tcl_GlobalEval and Tcl_GlobalEvalObj functions. Add [file normalize] to pkgIndex.tcl, in order to prevent '..' in file paths. Remove unused TCLPATCHL, it should be ".0" for all final releases. check-in: 202603bf user: jan.nijtmans tags: core-8-4-branch | |
2013-01-04
| ||
12:57 | Restructure Tk's stub library: No longer use Tcl_SetResult() for setting the error message, but Tcl_ResetResult/Tcl_AppendResult, as all other stub libraries do. This will allow us to remove Tcl_SetResult() in Tcl 9.0, eventually. More structural improvements, taken over from Tcl 8.6's tclOOStubLib.c/tclTomMathStubLib.c and from Tk 8.6's tclStubLib.c check-in: 8dbe7bcb user: jan.nijtmans tags: core-8-4-branch | |
Changes
Changes to generic/tkConsole.c.
︙ | ︙ | |||
440 441 442 443 444 445 446 | if (mainWindow) { Tk_CreateEventHandler(mainWindow, StructureNotifyMask, ConsoleEventProc, (ClientData) info); info->refCount++; } Tcl_Preserve((ClientData) consoleInterp); | | | 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 | if (mainWindow) { Tk_CreateEventHandler(mainWindow, StructureNotifyMask, ConsoleEventProc, (ClientData) info); info->refCount++; } Tcl_Preserve((ClientData) consoleInterp); result = Tcl_EvalEx(consoleInterp, initCmd, -1, TCL_EVAL_GLOBAL); if (result == TCL_ERROR) { Tcl_Obj *objPtr = Tcl_GetVar2Ex(consoleInterp, "errorCode", NULL, TCL_GLOBAL_ONLY); Tcl_ResetResult(interp); if (objPtr) { Tcl_SetObjErrorCode(interp, objPtr); } |
︙ | ︙ | |||
544 545 546 547 548 549 550 | Tcl_NewStringObj("stdout", -1)); } Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewStringObj(bytes, numBytes)); Tcl_DStringFree(&ds); Tcl_IncrRefCount(cmd); | | | 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 | Tcl_NewStringObj("stdout", -1)); } Tcl_ListObjAppendElement(NULL, cmd, Tcl_NewStringObj(bytes, numBytes)); Tcl_DStringFree(&ds); Tcl_IncrRefCount(cmd); Tcl_EvalObjEx(consoleInterp, cmd, TCL_EVAL_GLOBAL); Tcl_DecrRefCount(cmd); } } return toWrite; } /* |
︙ | ︙ | |||
750 751 752 753 754 755 756 | } break; } Tcl_IncrRefCount(cmd); if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) { Tcl_Preserve((ClientData) consoleInterp); | | | 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 | } break; } Tcl_IncrRefCount(cmd); if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) { Tcl_Preserve((ClientData) consoleInterp); result = Tcl_EvalObjEx(consoleInterp, cmd, TCL_EVAL_GLOBAL); if (result == TCL_ERROR) { Tcl_Obj *objPtr = Tcl_GetVar2Ex(consoleInterp, "errorCode", NULL, TCL_GLOBAL_ONLY); Tcl_ResetResult(interp); if (objPtr) { Tcl_SetObjErrorCode(interp, objPtr); } |
︙ | ︙ | |||
826 827 828 829 830 831 832 | Tcl_AppendResult(interp, "no active master interp", NULL); return TCL_ERROR; } Tcl_Preserve((ClientData) otherInterp); switch ((enum option) index) { case OTHER_EVAL: | | | 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 | Tcl_AppendResult(interp, "no active master interp", NULL); return TCL_ERROR; } Tcl_Preserve((ClientData) otherInterp); switch ((enum option) index) { case OTHER_EVAL: result = Tcl_EvalObjEx(otherInterp, objv[2], TCL_EVAL_GLOBAL); /* * TODO: Should exceptions be filtered here? */ if (result == TCL_ERROR) { Tcl_Obj *objPtr = Tcl_GetVar2Ex(otherInterp, "errorCode", NULL, TCL_GLOBAL_ONLY); Tcl_ResetResult(interp); |
︙ | ︙ | |||
969 970 971 972 973 974 975 | XEvent *eventPtr; { if (eventPtr->type == DestroyNotify) { ConsoleInfo *info = (ConsoleInfo *) clientData; Tcl_Interp *consoleInterp = info->consoleInterp; if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) { | | | 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 | XEvent *eventPtr; { if (eventPtr->type == DestroyNotify) { ConsoleInfo *info = (ConsoleInfo *) clientData; Tcl_Interp *consoleInterp = info->consoleInterp; if (consoleInterp && !Tcl_InterpDeleted(consoleInterp)) { Tcl_EvalEx(consoleInterp, "tk::ConsoleExit", -1, TCL_EVAL_GLOBAL); } if (--info->refCount <= 0) { ckfree((char *) info); } } } |
Changes to generic/tkTest.c.
︙ | ︙ | |||
406 407 408 409 410 411 412 | Tk_Window tkwin; KeySym keySym; { CBinding *cbindPtr; cbindPtr = (CBinding *) clientData; | | | | 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 | Tk_Window tkwin; KeySym keySym; { CBinding *cbindPtr; cbindPtr = (CBinding *) clientData; return Tcl_EvalEx(interp, cbindPtr->command, -1, TCL_EVAL_GLOBAL); } static void CBindingFreeProc(clientData) ClientData clientData; { CBinding *cbindPtr = (CBinding *) clientData; if (cbindPtr->delete != NULL) { Tcl_EvalEx(cbindPtr->interp, cbindPtr->delete, -1, TCL_EVAL_GLOBAL); ckfree((char *) cbindPtr->delete); } ckfree((char *) cbindPtr->command); ckfree((char *) cbindPtr); } /* |
︙ | ︙ |
Changes to generic/tkTextWind.c.
︙ | ︙ | |||
765 766 767 768 769 770 771 | * The window doesn't currently exist. Create it by evaluating * the creation script. The script must return the window's * path name: look up that name to get back to the window * token. Then register ourselves as the geometry manager for * the window. */ | | | 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 | * The window doesn't currently exist. Create it by evaluating * the creation script. The script must return the window's * path name: look up that name to get back to the window * token. Then register ourselves as the geometry manager for * the window. */ code = Tcl_EvalEx(textPtr->interp, ewPtr->body.ew.create, -1, TCL_EVAL_GLOBAL); if (code != TCL_OK) { createError: Tcl_BackgroundError(textPtr->interp); goto gotWindow; } Tcl_DStringInit(&name); Tcl_DStringAppend(&name, Tcl_GetStringResult(textPtr->interp), -1); |
︙ | ︙ |
Changes to macosx/tkMacOSXHLEvents.c.
︙ | ︙ | |||
200 201 202 203 204 205 206 | long handlerRefcon) { Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::OpenApplication", &dummy)) { | | | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | long handlerRefcon) { Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::OpenApplication", &dummy)) { Tcl_EvalEx(interp, "::tk::mac::OpenApplication", -1, TCL_EVAL_GLOBAL); } return noErr; } /* *---------------------------------------------------------------------- * |
︙ | ︙ | |||
234 235 236 237 238 239 240 | Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; ProcessSerialNumber thePSN = {0, kCurrentProcess}; OSStatus err = ChkErr(SetFrontProcess, &thePSN); if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::ReopenApplication", &dummy)) { | | | 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; ProcessSerialNumber thePSN = {0, kCurrentProcess}; OSStatus err = ChkErr(SetFrontProcess, &thePSN); if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::ReopenApplication", &dummy)) { Tcl_EvalEx(interp, "::tk::mac::ReopenApplication", -1, TCL_EVAL_GLOBAL); } return err; } /* *---------------------------------------------------------------------- * |
︙ | ︙ | |||
267 268 269 270 271 272 273 | long handlerRefcon) { Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::ShowPreferences", &dummy)) { | | | 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | long handlerRefcon) { Tcl_CmdInfo dummy; Tcl_Interp *interp = (Tcl_Interp *) handlerRefcon; if (interp && Tcl_GetCommandInfo(interp, "::tk::mac::ShowPreferences", &dummy)) { Tcl_EvalEx(interp, "::tk::mac::ShowPreferences", -1, TCL_EVAL_GLOBAL); } return noErr; } /* *---------------------------------------------------------------------- * |
︙ | ︙ | |||
586 587 588 589 590 591 592 | ReallyKillMe( Tcl_Event *eventPtr, int flags) { Tcl_Interp *interp = ((KillEvent *) eventPtr)->interp; Tcl_CmdInfo dummy; if (Tcl_GetCommandInfo(interp, "::tk::mac::Quit", &dummy)) { | | | | 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 | ReallyKillMe( Tcl_Event *eventPtr, int flags) { Tcl_Interp *interp = ((KillEvent *) eventPtr)->interp; Tcl_CmdInfo dummy; if (Tcl_GetCommandInfo(interp, "::tk::mac::Quit", &dummy)) { Tcl_EvalEx(interp, "::tk::mac::Quit", -1, TCL_EVAL_GLOBAL); } else { Tcl_EvalEx(interp, "exit", -1, TCL_EVAL_GLOBAL); } return 1; } /* *---------------------------------------------------------------------- * |
︙ | ︙ |
Changes to macosx/tkMacOSXWindowEvent.c.
︙ | ︙ | |||
121 122 123 124 125 126 127 | statusPtr->stopProcessing = 1; break; case kEventAppHidden: if (toggleHide == 0) { toggleHide = 1; if (eventPtr->interp && Tcl_GetCommandInfo(eventPtr->interp, "::tk::mac::OnHide", &dummy)) { | | | | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | statusPtr->stopProcessing = 1; break; case kEventAppHidden: if (toggleHide == 0) { toggleHide = 1; if (eventPtr->interp && Tcl_GetCommandInfo(eventPtr->interp, "::tk::mac::OnHide", &dummy)) { Tcl_EvalEx(eventPtr->interp, "::tk::mac::OnHide", -1, TCL_EVAL_GLOBAL); } } statusPtr->stopProcessing = 1; break; case kEventAppShown: if (toggleHide == 1) { toggleHide = 0; if (eventPtr->interp && Tcl_GetCommandInfo(eventPtr->interp, "::tk::mac::OnShow", &dummy)) { Tcl_EvalEx(eventPtr->interp, "::tk::mac::OnShow", -1, TCL_EVAL_GLOBAL); } } statusPtr->stopProcessing = 1; break; case kEventAppAvailableWindowBoundsChanged: { static UInt32 prevId = 0; UInt32 id; |
︙ | ︙ | |||
892 893 894 895 896 897 898 | protocol = (Atom) eventPtr->xclient.data.l[0]; for (protPtr = wmPtr->protPtr; protPtr != NULL; protPtr = protPtr->nextPtr) { if (protocol == protPtr->protocol) { Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); | | | 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 | protocol = (Atom) eventPtr->xclient.data.l[0]; for (protPtr = wmPtr->protPtr; protPtr != NULL; protPtr = protPtr->nextPtr) { if (protocol == protPtr->protocol) { Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL); if (result != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (command for \""); Tcl_AddErrorInfo(interp, Tk_GetAtomName((Tk_Window) winPtr, protocol)); Tcl_AddErrorInfo(interp, "\" window manager protocol)"); Tk_BackgroundError(interp); } |
︙ | ︙ |
Changes to unix/Makefile.in.
1 2 3 4 5 6 7 8 9 10 | # # This file is a Makefile for Tk. If it has the name "Makefile.in" # then it is a template for a Makefile; to generate the actual Makefile, # run "./configure", which is a configuration script generated by the # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # Current Tk version; used in various names. TCLVERSION = @TCL_VERSION@ | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # # This file is a Makefile for Tk. If it has the name "Makefile.in" # then it is a template for a Makefile; to generate the actual Makefile, # run "./configure", which is a configuration script generated by the # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # Current Tk version; used in various names. TCLVERSION = @TCL_VERSION@ VERSION = @TK_VERSION@ MAJOR_VERSION = @TK_MAJOR_VERSION@ MINOR_VERSION = @TK_MINOR_VERSION@ PATCH_LEVEL = @TK_PATCH_LEVEL@ LOCALES = @LOCALES@ #---------------------------------------------------------------- |
︙ | ︙ | |||
658 659 660 661 662 663 664 | chmod +x $(SRC_DIR)/install-sh; \ fi @if test "x$(TK_SHARED_BUILD)" = "x1"; then \ echo "Creating package index $(PKG_INDEX)"; \ rm -f "$(PKG_INDEX)"; \ (\ relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\ | | | | | 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 | chmod +x $(SRC_DIR)/install-sh; \ fi @if test "x$(TK_SHARED_BUILD)" = "x1"; then \ echo "Creating package index $(PKG_INDEX)"; \ rm -f "$(PKG_INDEX)"; \ (\ relative=`echo | awk '{ORS=" "; split("$(TK_PKG_DIR)",a,"/"); for (f in a) {print ".."}}'`;\ echo "if {[package vcompare [package provide Tcl] 8.4] != 0} return";\ if test "x$(DLL_INSTALL_DIR)" != "x$(BIN_INSTALL_DIR)"; then \ echo "package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION) [list load [file join \$$dir $${relative}$(TK_LIB_FILE)] Tk]";\ else \ echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\ echo " || ([info exists ::argv] && [lsearch -exact \$$::argv -display] > -1))} {";\ echo " package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION) [list load [file normalize [file join \$$dir $${relative}.. bin $(TK_LIB_FILE)] Tk]]";\ echo "} else {";\ echo " package ifneeded Tk $(MAJOR_VERSION).$(MINOR_VERSION) [list load [file normalize [file join \$$dir $${relative}.. bin tk${MAJOR_VERSION}${MINOR_VERSION}.dll]] Tk]";\ echo "}";\ fi \ ) > "$(PKG_INDEX)"; \ fi @echo "Installing $(LIB_FILE) to $(DLL_INSTALL_DIR)/" @@INSTALL_LIB@ @chmod 555 "$(DLL_INSTALL_DIR)/$(LIB_FILE)" |
︙ | ︙ |
Changes to unix/tkUnixSend.c.
︙ | ︙ | |||
978 979 980 981 982 983 984 | || (strcmp(riPtr->name, destName) != 0)) { continue; } Tcl_Preserve((ClientData) riPtr); localInterp = riPtr->interp; Tcl_Preserve((ClientData) localInterp); if (firstArg == (argc-1)) { | | | | 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 | || (strcmp(riPtr->name, destName) != 0)) { continue; } Tcl_Preserve((ClientData) riPtr); localInterp = riPtr->interp; Tcl_Preserve((ClientData) localInterp); if (firstArg == (argc-1)) { result = Tcl_EvalEx(localInterp, argv[firstArg], -1, TCL_EVAL_GLOBAL); } else { Tcl_DStringInit(&request); Tcl_DStringAppend(&request, argv[firstArg], -1); for (i = firstArg+1; i < argc; i++) { Tcl_DStringAppend(&request, " ", 1); Tcl_DStringAppend(&request, argv[i], -1); } result = Tcl_EvalEx(localInterp, Tcl_DStringValue(&request), -1, TCL_EVAL_GLOBAL); Tcl_DStringFree(&request); } if (interp != localInterp) { if (result == TCL_ERROR) { Tcl_Obj *errorObjPtr; /* |
︙ | ︙ | |||
1519 1520 1521 1522 1523 1524 1525 | * We must protect the interpreter because the script may * enter another event loop, which might call Tcl_DeleteInterp. */ remoteInterp = riPtr->interp; Tcl_Preserve((ClientData) remoteInterp); | | | 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 | * We must protect the interpreter because the script may * enter another event loop, which might call Tcl_DeleteInterp. */ remoteInterp = riPtr->interp; Tcl_Preserve((ClientData) remoteInterp); result = Tcl_EvalEx(remoteInterp, script, -1, TCL_EVAL_GLOBAL); /* * The call to Tcl_Release may have released the interpreter * which will cause the "send" command for that interpreter * to be deleted. The command deletion callback will set the * riPtr->interp field to NULL, hence the check below for NULL. */ |
︙ | ︙ |
Changes to unix/tkUnixWm.c.
︙ | ︙ | |||
5717 5718 5719 5720 5721 5722 5723 | protocolName = Tk_GetAtomName((Tk_Window) winPtr, protocol); for (protPtr = wmPtr->protPtr; protPtr != NULL; protPtr = protPtr->nextPtr) { if (protocol == protPtr->protocol) { Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); | | | 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 | protocolName = Tk_GetAtomName((Tk_Window) winPtr, protocol); for (protPtr = wmPtr->protPtr; protPtr != NULL; protPtr = protPtr->nextPtr) { if (protocol == protPtr->protocol) { Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL); if (result != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (command for \""); Tcl_AddErrorInfo(interp, protocolName); Tcl_AddErrorInfo(interp, "\" window manager protocol)"); Tcl_BackgroundError(interp); } |
︙ | ︙ |
Changes to win/Makefile.in.
1 2 3 4 5 6 7 | # This file is a Makefile for Tk. If it has the name "Makefile.in" # then it is a template for a Makefile; to generate the actual Makefile, # run "./configure", which is a configuration script generated by the # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. TCLVERSION = @TCL_VERSION@ | < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # This file is a Makefile for Tk. If it has the name "Makefile.in" # then it is a template for a Makefile; to generate the actual Makefile, # run "./configure", which is a configuration script generated by the # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. TCLVERSION = @TCL_VERSION@ VERSION = @TK_VERSION@ #---------------------------------------------------------------- # Things you can change to personalize the Makefile for your own # site (you can make these changes in either Makefile.in or # Makefile, but changes to Makefile will get lost if you re-run # the configuration script). |
︙ | ︙ | |||
139 140 141 142 143 144 145 | WISH = wish$(VER)${EXESUFFIX} TKTEST = tktest${EXEEXT} CAT32 = cat32$(EXEEXT) MAN2TCL = man2tcl$(EXEEXT) @SET_MAKE@ | | | 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | WISH = wish$(VER)${EXESUFFIX} TKTEST = tktest${EXEEXT} CAT32 = cat32$(EXEEXT) MAN2TCL = man2tcl$(EXEEXT) @SET_MAKE@ # Setting the VPATH variable to a list of paths will cause the # makefile to look into these paths when resolving .c to .obj # dependencies. VPATH = $(GENERIC_DIR):$(WIN_DIR):$(UNIX_DIR):$(XLIB_DIR):$(RC_DIR) # warning flags CFLAGS_WARNING = @CFLAGS_WARNING@ |
︙ | ︙ | |||
362 363 364 365 366 367 368 | DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget SHELL_ENV = \ @TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \ TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \ PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; | | | 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 | DEMOPROGS = browse hello ixset rmt rolodex square tcolor timer widget SHELL_ENV = \ @TCL_LIBRARY="$(TCL_SRC_DIR_NATIVE)/library"; export TCL_LIBRARY; \ TK_LIBRARY="$(ROOT_DIR_NATIVE)/library"; export TK_LIBRARY; \ PATH="$(TCL_BIN_DIR):$(PATH)"; export PATH; # Main targets. The default target -- all -- builds the binaries, # performs any post processing on libraries or documents. all: binaries libraries doc binaries: @LIBRARIES@ $(WISH) libraries: |
︙ | ︙ | |||
433 434 435 436 437 438 439 | @for i in $(TK_DLL_FILE) $(WISH); \ do \ if [ -f $$i ]; then \ echo "Installing $$i to $(BIN_INSTALL_DIR)/"; \ $(COPY) $$i "$(BIN_INSTALL_DIR)"; \ fi; \ done | | | | | | 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 | @for i in $(TK_DLL_FILE) $(WISH); \ do \ if [ -f $$i ]; then \ echo "Installing $$i to $(BIN_INSTALL_DIR)/"; \ $(COPY) $$i "$(BIN_INSTALL_DIR)"; \ fi; \ done @echo "Creating package index $(PKG_INDEX)"; @$(RM) $(PKG_INDEX); @(\ echo "if {[package vcompare [package provide Tcl] 8.4] != 0} return";\ echo "if {(\$$::tcl_platform(platform) eq \"unix\") && ([info exists ::env(DISPLAY)]";\ echo " || ([info exists ::argv] && [lsearch -exact \$$::argv -display] > -1))} {";\ echo " package ifneeded Tk $(VERSION) [list load [file normalize [file join \$$dir .. .. bin libtk$(VERSION).dll]] Tk]";\ echo "} else {";\ echo " package ifneeded Tk $(VERSION) [list load [file normalize [file join \$$dir .. .. bin $(TK_DLL_FILE)]] Tk]";\ echo "}";\ ) > $(PKG_INDEX); @for i in tkConfig.sh $(TK_LIB_FILE) $(TK_STUB_LIB_FILE); \ do \ if [ -f $$i ]; then \ echo "Installing $$i to $(LIB_INSTALL_DIR)/"; \ $(COPY) $$i "$(LIB_INSTALL_DIR)"; \ |
︙ | ︙ |
Changes to win/tkWinScrlbr.c.
︙ | ︙ | |||
578 579 580 581 582 583 584 | } sprintf(valueString, "%g", pos); Tcl_DStringAppendElement(&cmdString, "moveto"); Tcl_DStringAppendElement(&cmdString, valueString); } interp = scrollPtr->info.interp; | | | 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 | } sprintf(valueString, "%g", pos); Tcl_DStringAppendElement(&cmdString, "moveto"); Tcl_DStringAppendElement(&cmdString, valueString); } interp = scrollPtr->info.interp; code = Tcl_EvalEx(interp, cmdString.string, -1, TCL_EVAL_GLOBAL); if (code != TCL_OK && code != TCL_CONTINUE && code != TCL_BREAK) { Tcl_AddErrorInfo(interp, "\n (scrollbar command)"); Tcl_BackgroundError(interp); } Tcl_DStringFree(&cmdString); Tcl_ServiceAll(); |
︙ | ︙ |
Changes to win/tkWinWm.c.
︙ | ︙ | |||
6119 6120 6121 6122 6123 6124 6125 | * result of the eval. */ const char *name = Tk_GetAtomName((Tk_Window) winPtr, protocol); Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); | | | 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 | * result of the eval. */ const char *name = Tk_GetAtomName((Tk_Window) winPtr, protocol); Tcl_Preserve((ClientData) protPtr); interp = protPtr->interp; Tcl_Preserve((ClientData) interp); result = Tcl_EvalEx(interp, protPtr->command, -1, TCL_EVAL_GLOBAL); if (result != TCL_OK) { Tcl_AddErrorInfo(interp, "\n (command for \""); Tcl_AddErrorInfo(interp, name); Tcl_AddErrorInfo(interp, "\" window manager protocol)"); Tcl_BackgroundError(interp); } Tcl_Release((ClientData) interp); |
︙ | ︙ |