From 25b5a597675b8977ddab4cea6f2675dd583346a4c800b83767efe65328888236 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Wed, 12 Nov 2014 15:59:29 +0000 Subject: [PATCH 1/4] - New version 8.6.3: - Add itcl-unbreak-iwidgets.patch to revert a recent change in itcl that broke iwidgets. OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=81 --- itcl-unbreak-iwidgets.patch | 214 ++++++++++++++++++++++++++++++++++++ tcl.changes | 23 ++++ tcl.spec | 14 ++- tcl8.6.2-src.tar.gz | 3 - tcl8.6.3-src.tar.gz | 3 + 5 files changed, 249 insertions(+), 8 deletions(-) create mode 100644 itcl-unbreak-iwidgets.patch delete mode 100644 tcl8.6.2-src.tar.gz create mode 100644 tcl8.6.3-src.tar.gz diff --git a/itcl-unbreak-iwidgets.patch b/itcl-unbreak-iwidgets.patch new file mode 100644 index 0000000..7e99d8e --- /dev/null +++ b/itcl-unbreak-iwidgets.patch @@ -0,0 +1,214 @@ +Index: generic/itclBase.c +================================================================== +--- generic/itclBase.c ++++ generic/itclBase.c +@@ -319,11 +319,11 @@ + Tcl_InitObjHashTable(&infoPtr->nameClasses); + Tcl_InitHashTable(&infoPtr->namespaceClasses, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(&infoPtr->procMethods, TCL_ONE_WORD_KEYS); + Tcl_InitObjHashTable(&infoPtr->instances); + Tcl_InitHashTable(&infoPtr->objectInstances, TCL_ONE_WORD_KEYS); +- Tcl_InitObjHashTable(&infoPtr->myEnsembles); ++// Tcl_InitObjHashTable(&infoPtr->myEnsembles); + Tcl_InitObjHashTable(&infoPtr->classTypes); + infoPtr->ensembleInfo = (EnsembleInfo *)ckalloc(sizeof(EnsembleInfo)); + memset(infoPtr->ensembleInfo, 0, sizeof(EnsembleInfo)); + Tcl_InitHashTable(&infoPtr->ensembleInfo->ensembles, TCL_ONE_WORD_KEYS); + Tcl_InitHashTable(&infoPtr->ensembleInfo->subEnsembles, TCL_ONE_WORD_KEYS); + +Index: generic/itclInt.h +================================================================== +--- generic/itclInt.h ++++ generic/itclInt.h +@@ -148,12 +148,12 @@ + Tcl_HashTable nameClasses; /* maps from fullNamePtr to iclsPtr */ + Tcl_HashTable namespaceClasses; /* maps from nsPtr to iclsPtr */ + Tcl_HashTable procMethods; /* maps from procPtr to mFunc */ + Tcl_HashTable instances; /* maps from instanceNumber to ioPtr */ + Tcl_HashTable objectInstances; /* maps from ioPtr to instanceNumber */ +- Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) +- * etc. to ensemble pathName */ ++// Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) ++// * etc. to ensemble pathName */ + Tcl_HashTable classTypes; /* maps from class type i.e. "widget" + * to define value i.e. ITCL_WIDGET */ + int protection; /* protection level currently in effect */ + int useOldResolvers; /* whether to use the "old" style + * resolvers or the CallFrame resolvers */ + +Index: generic/itclParse.c +================================================================== +--- generic/itclParse.c ++++ generic/itclParse.c +@@ -187,17 +187,17 @@ + int + Itcl_ParseInit( + Tcl_Interp *interp, /* interpreter to be updated */ + ItclObjectInfo *infoPtr) /* info regarding all known objects and classes */ + { +- Tcl_HashEntry *hPtr; ++// Tcl_HashEntry *hPtr; + Tcl_Namespace *parserNs; +- Tcl_Obj *objPtr; +- Tcl_Obj *namePtr; ++// Tcl_Obj *objPtr; ++// Tcl_Obj *namePtr; + ProtectionCmdInfo *pInfoPtr; + Tcl_DString buffer; +- int isNew; ++// int isNew; + int i; + + /* + * Create the "itcl::parser" namespace used to parse class + * definitions. +@@ -264,16 +264,18 @@ + * Create the "itcl::find" command for high-level queries. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::find") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::find", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::find", + "classes", "?pattern?", + Itcl_FindClassesCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { +@@ -295,16 +297,18 @@ + * and classes. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::delete") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::delete", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::delete", + "class", "name ?name...?", + Itcl_DelClassCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { +@@ -333,16 +337,18 @@ + * and classes existence. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::is") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::is", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::is", + "class", "name", Itcl_IsClassCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { + return TCL_ERROR; +@@ -382,31 +388,35 @@ + if (Itcl_AddEnsemblePart(interp, "::itcl::filter", + "delete", "objectOrClass filter ? ... ?", Itcl_FilterDeleteCmd, + (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::filter", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + Itcl_PreserveData((ClientData)infoPtr); + + /* + * Add the "forward" commands (add/delete) + */ + if (Itcl_CreateEnsemble(interp, "::itcl::forward") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::forward", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::forward", + "add", "objectOrClass srcCommand targetCommand ? options ... ?", + Itcl_ForwardAddCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { +@@ -426,16 +436,18 @@ + * Add the "mixin" (add/delete) commands. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::mixin") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::mixin", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::mixin", + "add", "objectOrClass class ? class ... ?", + Itcl_MixinAddCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { +@@ -455,15 +467,17 @@ + * Add commands for handling import stubs at the Tcl level. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::import::stub") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::stubs", -1); + objPtr = Tcl_GetObjResult(interp); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::import::stub", + "create", "name", Itcl_StubCreateCmd, + (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) != TCL_OK) { + return TCL_ERROR; +@@ -529,16 +543,18 @@ + * Add the "delegate" (method/option) commands. + */ + if (Itcl_CreateEnsemble(interp, "::itcl::parser::delegate") != TCL_OK) { + return TCL_ERROR; + } ++/* + namePtr = Tcl_NewStringObj("::itcl::delegate", -1); + objPtr = Tcl_GetObjResult(interp); + Tcl_IncrRefCount(objPtr); + hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); + Tcl_SetHashValue(hPtr, objPtr); + Tcl_DecrRefCount(namePtr); ++*/ + + if (Itcl_AddEnsemblePart(interp, "::itcl::parser::delegate", + "method", "name to targetName as scipt using script", + Itcl_ClassDelegateMethodCmd, (ClientData)infoPtr, + Itcl_ReleaseData) != TCL_OK) { + diff --git a/tcl.changes b/tcl.changes index c6bcff6..42a35bf 100644 --- a/tcl.changes +++ b/tcl.changes @@ -1,3 +1,26 @@ +------------------------------------------------------------------- +Wed Nov 12 15:54:19 UTC 2014 - max@suse.com + +- New version 8.6.3: + * (bug)[b9e1a3] Correct Method Search Order + * (bug)[ccc2c2] Regression [lreplace {} 1 1] + * Crash regression in [oo::class destroy] + * (bug)[84af11] Regress [regsub -all {\(.*} a(b) {}] + * (bug)[cee90e] [try {} on ok {} - on return {} {}] panic + * (feature) [tcl::unsupported::getbytecode] disassember + * (enhancement) [string cat] bytecode optimization + * (bug)[82521b] segfault in mangled bytecode + * (bug)[bc5b79] Hang in some [read]s of limited size + * (bug)[bc1a96] segfault in [array set] of traced array + * (bug)[59a2e7] MSVC14 compile support + * (bug)[ed29c4] [fcopy] treats [blocked] as error + * (bug)[bf7135] regression in Tcl_Write() interface + * (bug)[10dc6d] fix [gets] on non-blocking channels + * (bug)[214cc0] Restore [lappend v] return value + * (bug)[5adc35] Stop forcing EOF to be permanent +- Add itcl-unbreak-iwidgets.patch to revert a recent change in + itcl that broke iwidgets. + ------------------------------------------------------------------- Sat Sep 6 10:23:13 UTC 2014 - coolo@suse.de diff --git a/tcl.spec b/tcl.spec index eb649ac..f700de4 100644 --- a/tcl.spec +++ b/tcl.spec @@ -18,7 +18,7 @@ Name: tcl Url: http://www.tcl.tk -Version: 8.6.2 +Version: 8.6.3 Release: 0 %define rrc %{nil} %define TCL_MINOR %(echo %version | cut -c1-3) @@ -33,13 +33,14 @@ Obsoletes: tcl-64bit # Provides: tclsh Provides: tclsh%{TCL_MINOR} -Obsoletes: itcl < 4.0.0 -Provides: itcl = 4.0.0 +Obsoletes: itcl < 4.0.2 +Provides: itcl = 4.0.2 PreReq: /bin/rm Source0: ftp://ftp.tcl.tk/pub/tcl/tcl8_6/%{name}%{version}%{rrc}-src.tar.gz Source1: tcl-rpmlintrc Source2: baselibs.conf Source3: macros.tcl +Patch1: itcl-unbreak-iwidgets.patch BuildRequires: autoconf BuildRequires: pkg-config # Required for test suite: @@ -64,8 +65,8 @@ Requires: tcl = %version %ifarch ppc64 Obsoletes: tcl-devel-64bit %endif -Obsoletes: itcl-devel < 4.0.0 -Provides: itcl-devel = 4.0.0 +Obsoletes: itcl-devel < 4.0.2 +Provides: itcl-devel = 4.0.2 # %description devel @@ -78,6 +79,9 @@ the Tcl language itself. %prep %setup -q -n %name%version +pushd pkgs/itcl* +%patch1 -R +popd %build cd unix diff --git a/tcl8.6.2-src.tar.gz b/tcl8.6.2-src.tar.gz deleted file mode 100644 index 57f7c06..0000000 --- a/tcl8.6.2-src.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86f7ae5f581dd0904d04415637ab3aef5a50986c1b6d04c340e2b1b0258da9c4 -size 8857161 diff --git a/tcl8.6.3-src.tar.gz b/tcl8.6.3-src.tar.gz new file mode 100644 index 0000000..a747a4c --- /dev/null +++ b/tcl8.6.3-src.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ce0778de0d50daaa9c345d7c1fd1288fb658f674028812e7eeee992e3051005 +size 8901509 From 95ea74e7a94fbd5a80b86a239fd34495c60b714d13b07d84bb9a502aabaa5385 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Mon, 17 Nov 2014 15:50:40 +0000 Subject: [PATCH 2/4] Minimize itcl-unbreak-iwidgets.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=82 --- itcl-unbreak-iwidgets.patch | 198 +----------------------------------- 1 file changed, 2 insertions(+), 196 deletions(-) diff --git a/itcl-unbreak-iwidgets.patch b/itcl-unbreak-iwidgets.patch index 7e99d8e..2fdf0fd 100644 --- a/itcl-unbreak-iwidgets.patch +++ b/itcl-unbreak-iwidgets.patch @@ -1,21 +1,3 @@ -Index: generic/itclBase.c -================================================================== ---- generic/itclBase.c -+++ generic/itclBase.c -@@ -319,11 +319,11 @@ - Tcl_InitObjHashTable(&infoPtr->nameClasses); - Tcl_InitHashTable(&infoPtr->namespaceClasses, TCL_ONE_WORD_KEYS); - Tcl_InitHashTable(&infoPtr->procMethods, TCL_ONE_WORD_KEYS); - Tcl_InitObjHashTable(&infoPtr->instances); - Tcl_InitHashTable(&infoPtr->objectInstances, TCL_ONE_WORD_KEYS); -- Tcl_InitObjHashTable(&infoPtr->myEnsembles); -+// Tcl_InitObjHashTable(&infoPtr->myEnsembles); - Tcl_InitObjHashTable(&infoPtr->classTypes); - infoPtr->ensembleInfo = (EnsembleInfo *)ckalloc(sizeof(EnsembleInfo)); - memset(infoPtr->ensembleInfo, 0, sizeof(EnsembleInfo)); - Tcl_InitHashTable(&infoPtr->ensembleInfo->ensembles, TCL_ONE_WORD_KEYS); - Tcl_InitHashTable(&infoPtr->ensembleInfo->subEnsembles, TCL_ONE_WORD_KEYS); - Index: generic/itclInt.h ================================================================== --- generic/itclInt.h @@ -26,8 +8,8 @@ Index: generic/itclInt.h Tcl_HashTable procMethods; /* maps from procPtr to mFunc */ Tcl_HashTable instances; /* maps from instanceNumber to ioPtr */ Tcl_HashTable objectInstances; /* maps from ioPtr to instanceNumber */ -- Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) -- * etc. to ensemble pathName */ +- Tcl_HashTable unused; /* used to be myEnsembles. Dummy left in +- * for binary compatibility with itk */ +// Tcl_HashTable myEnsembles; /* maps from ensemble name (::itcl::find) +// * etc. to ensemble pathName */ Tcl_HashTable classTypes; /* maps from class type i.e. "widget" @@ -36,179 +18,3 @@ Index: generic/itclInt.h int useOldResolvers; /* whether to use the "old" style * resolvers or the CallFrame resolvers */ -Index: generic/itclParse.c -================================================================== ---- generic/itclParse.c -+++ generic/itclParse.c -@@ -187,17 +187,17 @@ - int - Itcl_ParseInit( - Tcl_Interp *interp, /* interpreter to be updated */ - ItclObjectInfo *infoPtr) /* info regarding all known objects and classes */ - { -- Tcl_HashEntry *hPtr; -+// Tcl_HashEntry *hPtr; - Tcl_Namespace *parserNs; -- Tcl_Obj *objPtr; -- Tcl_Obj *namePtr; -+// Tcl_Obj *objPtr; -+// Tcl_Obj *namePtr; - ProtectionCmdInfo *pInfoPtr; - Tcl_DString buffer; -- int isNew; -+// int isNew; - int i; - - /* - * Create the "itcl::parser" namespace used to parse class - * definitions. -@@ -264,16 +264,18 @@ - * Create the "itcl::find" command for high-level queries. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::find") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::find", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::find", - "classes", "?pattern?", - Itcl_FindClassesCmd, - (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { -@@ -295,16 +297,18 @@ - * and classes. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::delete") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::delete", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::delete", - "class", "name ?name...?", - Itcl_DelClassCmd, - (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { -@@ -333,16 +337,18 @@ - * and classes existence. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::is") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::is", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::is", - "class", "name", Itcl_IsClassCmd, - (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { - return TCL_ERROR; -@@ -382,31 +388,35 @@ - if (Itcl_AddEnsemblePart(interp, "::itcl::filter", - "delete", "objectOrClass filter ? ... ?", Itcl_FilterDeleteCmd, - (ClientData)infoPtr, Itcl_ReleaseData) != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::filter", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - Itcl_PreserveData((ClientData)infoPtr); - - /* - * Add the "forward" commands (add/delete) - */ - if (Itcl_CreateEnsemble(interp, "::itcl::forward") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::forward", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::forward", - "add", "objectOrClass srcCommand targetCommand ? options ... ?", - Itcl_ForwardAddCmd, (ClientData)infoPtr, - Itcl_ReleaseData) != TCL_OK) { -@@ -426,16 +436,18 @@ - * Add the "mixin" (add/delete) commands. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::mixin") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::mixin", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::mixin", - "add", "objectOrClass class ? class ... ?", - Itcl_MixinAddCmd, (ClientData)infoPtr, - Itcl_ReleaseData) != TCL_OK) { -@@ -455,15 +467,17 @@ - * Add commands for handling import stubs at the Tcl level. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::import::stub") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::stubs", -1); - objPtr = Tcl_GetObjResult(interp); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::import::stub", - "create", "name", Itcl_StubCreateCmd, - (ClientData)NULL, (Tcl_CmdDeleteProc*)NULL) != TCL_OK) { - return TCL_ERROR; -@@ -529,16 +543,18 @@ - * Add the "delegate" (method/option) commands. - */ - if (Itcl_CreateEnsemble(interp, "::itcl::parser::delegate") != TCL_OK) { - return TCL_ERROR; - } -+/* - namePtr = Tcl_NewStringObj("::itcl::delegate", -1); - objPtr = Tcl_GetObjResult(interp); - Tcl_IncrRefCount(objPtr); - hPtr = Tcl_CreateHashEntry(&infoPtr->myEnsembles, (char *)namePtr, &isNew); - Tcl_SetHashValue(hPtr, objPtr); - Tcl_DecrRefCount(namePtr); -+*/ - - if (Itcl_AddEnsemblePart(interp, "::itcl::parser::delegate", - "method", "name to targetName as scipt using script", - Itcl_ClassDelegateMethodCmd, (ClientData)infoPtr, - Itcl_ReleaseData) != TCL_OK) { - From 9493ce416de0e9a0a21b7d9dbd329cc2960bebc125a0b6fcde7d8a4722b4a004 Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Mon, 17 Nov 2014 16:12:31 +0000 Subject: [PATCH 3/4] update changes file OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=83 --- tcl.changes | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tcl.changes b/tcl.changes index 42a35bf..a0ca046 100644 --- a/tcl.changes +++ b/tcl.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Nov 17 16:10:58 UTC 2014 - max@suse.com + +- Add itcl-unbreak-iwidgets.patch to fix a crash of itk/iwidgets + caused by recent changes in itcl. Will be obsoleted by the next + regular Tcl release. + ------------------------------------------------------------------- Wed Nov 12 15:54:19 UTC 2014 - max@suse.com From 61a82993b151ae8b1bc544d4742549a302e7ca31ebfd6a8e15b69b7d57e7591a Mon Sep 17 00:00:00 2001 From: Reinhard Max Date: Mon, 17 Nov 2014 16:13:30 +0000 Subject: [PATCH 4/4] OBS-URL: https://build.opensuse.org/package/show/devel:languages:tcl/tcl?expand=0&rev=84 --- tcl.changes | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tcl.changes b/tcl.changes index a0ca046..42a35bf 100644 --- a/tcl.changes +++ b/tcl.changes @@ -1,10 +1,3 @@ -------------------------------------------------------------------- -Mon Nov 17 16:10:58 UTC 2014 - max@suse.com - -- Add itcl-unbreak-iwidgets.patch to fix a crash of itk/iwidgets - caused by recent changes in itcl. Will be obsoleted by the next - regular Tcl release. - ------------------------------------------------------------------- Wed Nov 12 15:54:19 UTC 2014 - max@suse.com