Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch bug-e87bcf819f Excluding Merge-Ins
This is equivalent to a diff from 0cd538f301 to 4eda1d6aee
2018-04-29
| ||
21:14 | Upgrade everything to Unicode 11 (still in beta, expected in june 2018) check-in: 8f0b52858b user: jan.nijtmans tags: core-8-branch | |
2018-04-27
| ||
13:21 | merge 8.7 check-in: 1724282826 user: dgp tags: core_zip_vfs | |
2018-04-26
| ||
18:19 | merge 8.7 Leaf check-in: 4eda1d6aee user: dgp tags: bug-e87bcf819f | |
08:33 | Merge 8.7 check-in: b0c3db9294 user: jan.nijtmans tags: trunk | |
08:32 | Update test-cases, so they are selected or not for -DTCL_UTF_MAX=6. Now all relevant test-cases pas... check-in: 0cd538f301 user: jan.nijtmans tags: core-8-branch | |
2018-04-25
| ||
11:48 | merge 8.6 check-in: 146fed70ad user: dgp tags: core-8-branch | |
2018-04-23
| ||
13:51 | merge 8.7 check-in: 743fa61e1c user: dgp tags: bug-e87bcf819f | |
Changes to generic/tclInt.h.
︙ | ︙ | |||
848 849 850 851 852 853 854 855 856 857 858 859 860 861 | #define TclGetVarNsPtr(varPtr) \ (TclIsVarInHash(varPtr) \ ? ((TclVarHashTable *) ((((VarInHash *) (varPtr))->entry.tablePtr)))->nsPtr \ : NULL) #define VarHashRefCount(varPtr) \ ((VarInHash *) (varPtr))->refCount /* * Macros for direct variable access by TEBC. */ #define TclIsVarDirectReadable(varPtr) \ ( !((varPtr)->flags & (VAR_ARRAY|VAR_LINK|VAR_TRACED_READ)) \ | > > | 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 | #define TclGetVarNsPtr(varPtr) \ (TclIsVarInHash(varPtr) \ ? ((TclVarHashTable *) ((((VarInHash *) (varPtr))->entry.tablePtr)))->nsPtr \ : NULL) #define VarHashRefCount(varPtr) \ ((VarInHash *) (varPtr))->refCount MODULE_SCOPE Var * TclArrayContaining(Var *varPtr); /* * Macros for direct variable access by TEBC. */ #define TclIsVarDirectReadable(varPtr) \ ( !((varPtr)->flags & (VAR_ARRAY|VAR_LINK|VAR_TRACED_READ)) \ |
︙ | ︙ |
Changes to generic/tclOOBasic.c.
︙ | ︙ | |||
724 725 726 727 728 729 730 | /* * Now that we've pinned down what variable we're really talking about * (including traversing variable links), convert back to a name. */ varNamePtr = Tcl_NewObj(); | | | < < < < < < < < < | | | < < < < | 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 | /* * Now that we've pinned down what variable we're really talking about * (including traversing variable links), convert back to a name. */ varNamePtr = Tcl_NewObj(); if (TclIsVarArrayElement(varPtr)) { aryVar = TclArrayContaining(varPtr); Tcl_GetVariableFullName(interp, (Tcl_Var) aryVar, varNamePtr); Tcl_AppendToObj(varNamePtr, "(", -1); Tcl_AppendObjToObj(varNamePtr, ((VarInHash *)varPtr)->entry.key.objPtr); Tcl_AppendToObj(varNamePtr, ")", -1); } else { Tcl_GetVariableFullName(interp, (Tcl_Var) varPtr, varNamePtr); } Tcl_SetObjResult(interp, varNamePtr); return TCL_OK; } |
︙ | ︙ |
Changes to generic/tclVar.c.
︙ | ︙ | |||
107 108 109 110 111 112 113 114 115 116 117 118 119 120 | if (hPtr) { return VarHashGetValue(hPtr); } else { return NULL; } } #define VarHashGetKey(varPtr) \ (((VarInHash *)(varPtr))->entry.key.objPtr) #define VarHashDeleteTable(tablePtr) \ Tcl_DeleteHashTable(&(tablePtr)->table) | > > > > > > > | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | if (hPtr) { return VarHashGetValue(hPtr); } else { return NULL; } } Var * TclArrayContaining( Var *varPtr) { return (Var *) Tcl_GetHashValue( &(((VarInHash *)varPtr)->entry)); } #define VarHashGetKey(varPtr) \ (((VarInHash *)(varPtr))->entry.key.objPtr) #define VarHashDeleteTable(tablePtr) \ Tcl_DeleteHashTable(&(tablePtr)->table) |
︙ | ︙ | |||
1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 | varPtr = VarHashCreateVar(arrayPtr->value.tablePtr, elNamePtr, &isNew); if (isNew) { if (arrayPtr->flags & VAR_SEARCH_ACTIVE) { DeleteSearches((Interp *) interp, arrayPtr); } TclSetVarArrayElement(varPtr); } } else { varPtr = VarHashFindVar(arrayPtr->value.tablePtr, elNamePtr); if (varPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { TclObjVarErrMsg(interp, arrayNamePtr, elNamePtr, msg, noSuchElement, index); | > | 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 | varPtr = VarHashCreateVar(arrayPtr->value.tablePtr, elNamePtr, &isNew); if (isNew) { if (arrayPtr->flags & VAR_SEARCH_ACTIVE) { DeleteSearches((Interp *) interp, arrayPtr); } TclSetVarArrayElement(varPtr); Tcl_SetHashValue( &(((VarInHash *)varPtr)->entry), arrayPtr); } } else { varPtr = VarHashFindVar(arrayPtr->value.tablePtr, elNamePtr); if (varPtr == NULL) { if (flags & TCL_LEAVE_ERR_MSG) { TclObjVarErrMsg(interp, arrayNamePtr, elNamePtr, msg, noSuchElement, index); |
︙ | ︙ | |||
2483 2484 2485 2486 2487 2488 2489 | Interp *iPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags, int index) { Var dummyVar; | > > > > > > | | 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 | Interp *iPtr, Tcl_Obj *part1Ptr, Tcl_Obj *part2Ptr, int flags, int index) { Var dummyVar; int traced; if (arrayPtr == NULL && TclIsVarArrayElement(varPtr)) { arrayPtr = TclArrayContaining(varPtr); } traced = TclIsVarTraced(varPtr) || (arrayPtr && (arrayPtr->flags & VAR_TRACED_UNSET)); if (arrayPtr && (arrayPtr->flags & VAR_SEARCH_ACTIVE)) { DeleteSearches(iPtr, arrayPtr); } else if (varPtr->flags & VAR_SEARCH_ACTIVE) { DeleteSearches(iPtr, varPtr); } |
︙ | ︙ |
Changes to tests/var.test.
︙ | ︙ | |||
1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 | unset -nocomplain $vn } -body { array set $vn {a 1 b 2 c 3} array for $vn $vn {} } -cleanup { unset -nocomplain $vn vn } -result {} catch {namespace delete ns} catch {unset arr} catch {unset v} catch {rename getbytes ""} catch {rename p ""} | > > > > > > > > > > > > > > > > > > > > > | 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 | unset -nocomplain $vn } -body { array set $vn {a 1 b 2 c 3} array for $vn $vn {} } -cleanup { unset -nocomplain $vn vn } -result {} test var-23.15 {array for, [Bug e87bcf819f]} -setup { unset -nocomplain a array set a {m 1 n 2} upvar 0 a(n) l set unset unset } -body { array for {k v} a {$unset l} } -cleanup { unset -nocomplain a } -returnCodes error -result {array changed during iteration} test var-23.15.1 {array for, [Bug e87bcf819f]} -setup { unset -nocomplain a array set a {m 1 n 2} upvar 0 a(n) l } -body { array for {k v} a {unset l} } -cleanup { unset -nocomplain a } -returnCodes error -result {array changed during iteration} catch {namespace delete ns} catch {unset arr} catch {unset v} catch {rename getbytes ""} catch {rename p ""} |
︙ | ︙ |