Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | info frame: restored return {type precompiled} in case of no frame information; see [0de6c1d79cfba2ea] for description |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-6-branch |
Files: | files | file ages | folders |
SHA3-256: |
8c2c0a6d7d8e285de4d5659f80730bc3 |
User & Date: | sebres 2024-07-02 14:36:59 |
Context
2024-07-03
| ||
12:34 | Tcl_RegisterObjType() in alphabetical order. Backport some formatting and type-casts from 8.7/9.0 Leaf check-in: 3f5699efd2 user: jan.nijtmans tags: core-8-6-branch | |
2024-07-02
| ||
14:38 | merge 8.6 check-in: 6f9b318d26 user: sebres tags: core-8-branch | |
14:36 | info frame: restored return {type precompiled} in case of no frame information; see [0de6c1d79cfba2e... check-in: 8c2c0a6d7d user: sebres tags: core-8-6-branch | |
12:36 | fix crash [0de6c1d79c] more consistently (an error "bad level" for info instead of artifical dummy i... check-in: 67a0bf288e user: sebres tags: core-8-6-branch | |
Changes
Changes to generic/tclCmdIL.c.
︙ | ︙ | |||
1207 1208 1209 1210 1211 1212 1213 | */ if (level > 0) { level -= topLevel; } framePtr = iPtr->cmdFramePtr; | < < < | 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 | */ if (level > 0) { level -= topLevel; } framePtr = iPtr->cmdFramePtr; while (++level <= 0) { framePtr = framePtr->nextPtr; if (!framePtr) { goto levelError; } } |
︙ | ︙ | |||
1278 1279 1280 1281 1282 1283 1284 | /* * This array is indexed by the TCL_LOCATION_... values, except * for _LAST. */ static const char *const typeString[TCL_LOCATION_LAST] = { "eval", "eval", "eval", "precompiled", "source", "proc" }; | | > > > > > | 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 | /* * This array is indexed by the TCL_LOCATION_... values, except * for _LAST. */ static const char *const typeString[TCL_LOCATION_LAST] = { "eval", "eval", "eval", "precompiled", "source", "proc" }; Proc *procPtr = NULL; int needsFree = -1; if (!framePtr) { goto precompiled; } procPtr = framePtr->framePtr ? framePtr->framePtr->procPtr : NULL; /* * Pull the information and construct the dictionary to return, as list. * Regarding use of the CmdFrame fields see tclInt.h, and its definition. */ #define ADD_PAIR(name, value) \ TclNewLiteralStringObj(tmpObj, name); \ |
︙ | ︙ | |||
1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 | } else { ADD_PAIR("line", Tcl_NewIntObj(1)); } ADD_PAIR("cmd", TclGetSourceFromFrame(framePtr, 0, NULL)); break; case TCL_LOCATION_PREBC: /* * Precompiled. Result contains the type as signal, nothing else. */ | > < | | 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 | } else { ADD_PAIR("line", Tcl_NewIntObj(1)); } ADD_PAIR("cmd", TclGetSourceFromFrame(framePtr, 0, NULL)); break; case TCL_LOCATION_PREBC: precompiled: /* * Precompiled. Result contains the type as signal, nothing else. */ ADD_PAIR("type", Tcl_NewStringObj(typeString[TCL_LOCATION_PREBC], -1)); break; case TCL_LOCATION_BC: { /* * Execution of bytecode. Talk to the BC engine to fill out the frame. */ |
︙ | ︙ | |||
1427 1428 1429 1430 1431 1432 1433 | } /* * 'level'. Common to all frame types. Conditional on having an associated * _visible_ CallFrame. */ | | | 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 | } /* * 'level'. Common to all frame types. Conditional on having an associated * _visible_ CallFrame. */ if (framePtr && (framePtr->framePtr != NULL) && (iPtr->varFramePtr != NULL)) { CallFrame *current = framePtr->framePtr; CallFrame *top = iPtr->varFramePtr; CallFrame *idx; for (idx=top ; idx!=NULL ; idx=idx->callerVarPtr) { if (idx == current) { int c = framePtr->framePtr->level; |
︙ | ︙ |
Changes to tests/info.test.
︙ | ︙ | |||
2416 2417 2418 2419 2420 2421 2422 | } -result 3 test info-40.0 {Bug 0de6c1d79c crash} -setup { interp create child child hide info } -body { list [child invokehidden info frame] \ | > > | | | | 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 | } -result 3 test info-40.0 {Bug 0de6c1d79c crash} -setup { interp create child child hide info } -body { list [child invokehidden info frame] \ [child invokehidden info frame 0] \ [child invokehidden info frame 1] \ [catch {child invokehidden info frame -1} msg] $msg \ [catch {child invokehidden info frame 2} msg] $msg } -cleanup { interp delete child unset -nocomplain msg } -result {1 {type precompiled} {type precompiled} 1 {bad level "-1"} 1 {bad level "2"}} # cleanup catch {namespace delete test_ns_info1 test_ns_info2} ::tcltest::cleanupTests return |