Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Proposed fix for 3389764. Have "path" dup routine duplicate the pattern of a value with a cyclic reference to itself. Don't keep a reference to the value getting dup'd so the assumptions of cycle prevention in bytecode compilation are satisfied. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | bug-3389764 |
Files: | files | file ages | folders |
SHA1: |
feed5dc53323190d1865e8772180e2c1 |
User & Date: | dgp 2011-08-11 20:04:57 |
Original Comment: | Proposed fix for 3389764. Have "path" dup routine duplicate the pattern of a value with a cyclic reference to itself. Don't keep a reference to the value getting dup'd so the assumptions of cycle prevention in bytecode compilation are satisfied. |
Context
2011-08-11
| ||
20:04 | Proposed fix for 3389764. Have "path" dup routine duplicate the pattern of a value with a cyclic r... Closed-Leaf check-in: feed5dc533 user: dgp tags: bug-3389764 | |
2011-08-10
| ||
18:24 | [Bug 3386721] Allow multiple [load]ing of the Tcltest package check-in: b71406bb51 user: ferrieux tags: trunk | |
Changes
Changes to generic/tclPathObj.c.
︙ | ︙ | |||
2613 2614 2615 2616 2617 2618 2619 | Tcl_Obj *copyPtr) /* Path obj with internal rep to set. */ { FsPath *srcFsPathPtr = PATHOBJ(srcPtr); FsPath *copyFsPathPtr = ckalloc(sizeof(FsPath)); SETPATHOBJ(copyPtr, copyFsPathPtr); | | > > > | < < | > > > | < < < | | < | | 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 | Tcl_Obj *copyPtr) /* Path obj with internal rep to set. */ { FsPath *srcFsPathPtr = PATHOBJ(srcPtr); FsPath *copyFsPathPtr = ckalloc(sizeof(FsPath)); SETPATHOBJ(copyPtr, copyFsPathPtr); if (srcFsPathPtr->translatedPathPtr == srcPtr) { /* Cycle in src -> make cycle in copy. */ copyFsPathPtr->translatedPathPtr = copyPtr; } else { copyFsPathPtr->translatedPathPtr = srcFsPathPtr->translatedPathPtr; if (copyFsPathPtr->translatedPathPtr != NULL) { Tcl_IncrRefCount(copyFsPathPtr->translatedPathPtr); } } if (srcFsPathPtr->normPathPtr == srcPtr) { /* Cycle in src -> make cycle in copy. */ copyFsPathPtr->normPathPtr = copyPtr; } else { copyFsPathPtr->normPathPtr = srcFsPathPtr->normPathPtr; if (copyFsPathPtr->normPathPtr != NULL) { Tcl_IncrRefCount(copyFsPathPtr->normPathPtr); } } copyFsPathPtr->cwdPtr = srcFsPathPtr->cwdPtr; if (copyFsPathPtr->cwdPtr != NULL) { Tcl_IncrRefCount(copyFsPathPtr->cwdPtr); } copyFsPathPtr->flags = srcFsPathPtr->flags; if (srcFsPathPtr->fsRecPtr != NULL && srcFsPathPtr->nativePathPtr != NULL) { Tcl_FSDupInternalRepProc *dupProc = |
︙ | ︙ |