Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Prevent crash in [info vars] with no class context. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dgp-method-type |
Files: | files | file ages | folders |
SHA1: |
c13f89d9d755509f4792c50f69743f69 |
User & Date: | dgp 2015-08-03 19:57:45 |
Context
2015-10-22
| ||
17:31 | merge trunk check-in: 172bcb56bf user: dgp tags: dgp-method-type | |
2015-08-03
| ||
19:57 | Prevent crash in [info vars] with no class context. check-in: c13f89d9d7 user: dgp tags: dgp-method-type | |
2015-07-30
| ||
12:29 | merge trunk check-in: 882461e86f user: dgp tags: dgp-method-type | |
Changes
Changes to generic/itclInfo.c.
︙ | ︙ | |||
1430 1431 1432 1433 1434 1435 1436 | Tcl_Obj *const objv[]) /* argument objects */ { FOREACH_HASH_DECLS; Tcl_Obj *listPtr; Tcl_Obj **newObjv; Tcl_Namespace *nsPtr; ItclObjectInfo *infoPtr; | | | 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 | Tcl_Obj *const objv[]) /* argument objects */ { FOREACH_HASH_DECLS; Tcl_Obj *listPtr; Tcl_Obj **newObjv; Tcl_Namespace *nsPtr; ItclObjectInfo *infoPtr; ItclClass *iclsPtr = NULL; ItclVariable *ivPtr; const char *pattern; const char *name; int useGlobalInfo; int result; ItclObject *ioPtr; |
︙ | ︙ | |||
1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 | if (objc == 2) { /* Give pattern a chance to determine context */ Tcl_ResetResult(interp); } else { return TCL_ERROR; } } if (iclsPtr->flags & (ITCL_TYPE|ITCL_WIDGETADAPTOR|ITCL_WIDGET)) { /* don't use the ::tcl::info::vars command */ useGlobalInfo = 0; if (objc == 2) { pattern = Tcl_GetString(objv[1]); } } if (useGlobalInfo) { newObjv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *)*(objc)); newObjv[0] = Tcl_NewStringObj("::tcl::info::vars", -1); Tcl_IncrRefCount(newObjv[0]); memcpy(newObjv+1, objv+1, sizeof(Tcl_Obj *)*(objc-1)); result = Tcl_EvalObjv(interp, objc, newObjv, 0); Tcl_DecrRefCount(newObjv[0]); | > > | 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 | if (objc == 2) { /* Give pattern a chance to determine context */ Tcl_ResetResult(interp); } else { return TCL_ERROR; } } if (iclsPtr) { if (iclsPtr->flags & (ITCL_TYPE|ITCL_WIDGETADAPTOR|ITCL_WIDGET)) { /* don't use the ::tcl::info::vars command */ useGlobalInfo = 0; if (objc == 2) { pattern = Tcl_GetString(objv[1]); } } } if (useGlobalInfo) { newObjv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *)*(objc)); newObjv[0] = Tcl_NewStringObj("::tcl::info::vars", -1); Tcl_IncrRefCount(newObjv[0]); memcpy(newObjv+1, objv+1, sizeof(Tcl_Obj *)*(objc-1)); result = Tcl_EvalObjv(interp, objc, newObjv, 0); Tcl_DecrRefCount(newObjv[0]); |
︙ | ︙ |