Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | [c949e73d3e] Prevent crashes trying to use object contexts that are not present. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
d32dbafdea7019ab55ed24e30941b194 |
User & Date: | dgp 2018-02-27 19:16:14.188 |
Context
2018-02-27
| ||
19:34 | [c949e73d3e] Repair regression in [info option $option] by expanding the object context discoverable by Itcl_GetContext(). Seems related to constructor operations. check-in: b8f24e43d4 user: dgp tags: trunk | |
19:16 | [c949e73d3e] Prevent crashes trying to use object contexts that are not present. check-in: d32dbafdea user: dgp tags: trunk | |
2018-02-15
| ||
21:57 | [SF Bug 281] Rebuild virtual tables as part of [inherit] so we resolve inherited commons properly. check-in: 84b0a3ad49 user: dgp tags: trunk | |
Changes
Changes to generic/itclInfo.c.
︙ | ︙ | |||
2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 | objv++; } /* * Return info for a specific option. */ if (optionName) { optionNamePtr = Tcl_NewStringObj(optionName, -1); hPtr = Tcl_FindHashEntry(&contextIoPtr->objectOptions, (char *)optionNamePtr); if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", optionName, "\" isn't a option in object \"", Tcl_GetString(contextIoPtr->namePtr), "\"", | > > > > > > | 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 | objv++; } /* * Return info for a specific option. */ if (optionName) { if (contextIoPtr == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "cannot access object-specific info ", "without an object context", (char*)NULL); return TCL_ERROR; } optionNamePtr = Tcl_NewStringObj(optionName, -1); hPtr = Tcl_FindHashEntry(&contextIoPtr->objectOptions, (char *)optionNamePtr); if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", optionName, "\" isn't a option in object \"", Tcl_GetString(contextIoPtr->namePtr), "\"", |
︙ | ︙ | |||
4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 | objv++; } /* * Return info for a specific option. */ if (optionName) { optionNamePtr = Tcl_NewStringObj(optionName, -1); hPtr = Tcl_FindHashEntry(&contextIoPtr->objectDelegatedOptions, (char *)optionNamePtr); if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", optionName, "\" isn't an option in object \"", Tcl_GetString(contextIoPtr->namePtr), "\"", | > > > > > > | 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 | objv++; } /* * Return info for a specific option. */ if (optionName) { if (contextIoPtr == NULL) { Tcl_ResetResult(interp); Tcl_AppendResult(interp, "cannot access object-specific info ", "without an object context", (char*)NULL); return TCL_ERROR; } optionNamePtr = Tcl_NewStringObj(optionName, -1); hPtr = Tcl_FindHashEntry(&contextIoPtr->objectDelegatedOptions, (char *)optionNamePtr); if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", optionName, "\" isn't an option in object \"", Tcl_GetString(contextIoPtr->namePtr), "\"", |
︙ | ︙ | |||
5198 5199 5200 5201 5202 5203 5204 | (char *)cmdNamePtr); } else { hPtr = Tcl_FindHashEntry(&contextIclsPtr->delegatedFunctions, (char *)cmdNamePtr); } if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), | | > | | | > | | | 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 | (char *)cmdNamePtr); } else { hPtr = Tcl_FindHashEntry(&contextIclsPtr->delegatedFunctions, (char *)cmdNamePtr); } if (hPtr == NULL) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", cmdName, "\" isn't a delegated typemethod in ", contextIoPtr ? "object \"" : "class \"", contextIoPtr ? Tcl_GetString(contextIoPtr->namePtr) : Tcl_GetString(contextIclsPtr->namePtr), "\"", (char*)NULL); return TCL_ERROR; } idmPtr = (ItclDelegatedFunction*)Tcl_GetHashValue(hPtr); if (!(idmPtr->flags & ITCL_TYPE_METHOD)) { Tcl_AppendStringsToObj(Tcl_GetObjResult(interp), "\"", cmdName, "\" isn't a delegated typemethod in ", contextIoPtr ? "object \"" : "class \"", contextIoPtr ? Tcl_GetString(contextIoPtr->namePtr) : Tcl_GetString(contextIclsPtr->namePtr), "\"", (char*)NULL); return TCL_ERROR; } /* * By default, return everything. */ if (objc == 0) { ioptlist = DefInfoOption; |
︙ | ︙ |