tDOM

Check-in [ff7642f303]
Login
Bounty program for improvements to Tcl and certain Tcl packages.

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:small amend, removing the previous trace in case to wrap to __tdomGC
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | fix-traced-gc-regression-of-091
Files: files | file ages | folders
SHA3-256: ff7642f303084f9b05e686c3fe13dd85b71d9a34e0e94d5b49444f316e84572d
User & Date: sebres 2019-03-14 15:38:15
Context
2019-03-14
16:16
accept tcl-test options like -load "load libtdom...; source ../lib/tdom.tcl" (allow to run test-suite from development environment, other tdom-version or uninstalled) Leaf check-in: 881efc6915 user: sebres tags: fix-traced-gc-regression-of-091
15:38
small amend, removing the previous trace in case to wrap to __tdomGC check-in: ff7642f303 user: sebres tags: fix-traced-gc-regression-of-091
15:24
try to explain and fix regression of traced GC, introduced in tdom 0.9.1 check-in: c466f47988 user: sebres tags: fix-traced-gc-regression-of-091
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tcldom.c.

549
550
551
552
553
554
555
556
557
558
559
560
561

562
563

564
565
566
567
568
569
570
{
    domDeleteInfo *dinfo = (domDeleteInfo*) clientData;
    domDocument   *doc   = dinfo->document;
    char           objCmdName[80];

    DBG(fprintf(stderr, "--> tcldom_docTrace %x %p\n", flags, doc));

    if (doc == NULL) {
        if (!(flags & (TCL_TRACE_UNSETS|TCL_INTERP_DESTROYED))) {
            Tcl_UntraceVar2(dinfo->interp, name1, name2,
                           TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
                           tcldom_docTrace, clientData);
        }

        FREE (dinfo);
        return NULL;

    }

    DOC_CMD(objCmdName, doc);
    if (flags & TCL_TRACE_WRITES) {
        Tcl_TraceVar2(interp,"__tdomGC", objCmdName, TCL_TRACE_UNSETS,
                     (Tcl_VarTraceProc*)tcldom_docTrace,
                     clientData);






|





>
|
|
>







549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
{
    domDeleteInfo *dinfo = (domDeleteInfo*) clientData;
    domDocument   *doc   = dinfo->document;
    char           objCmdName[80];

    DBG(fprintf(stderr, "--> tcldom_docTrace %x %p\n", flags, doc));

    if (doc == NULL || (flags & TCL_TRACE_WRITES)) {
        if (!(flags & (TCL_TRACE_UNSETS|TCL_INTERP_DESTROYED))) {
            Tcl_UntraceVar2(dinfo->interp, name1, name2,
                           TCL_TRACE_WRITES|TCL_TRACE_UNSETS,
                           tcldom_docTrace, clientData);
        }
        if (!(flags & TCL_TRACE_WRITES)) {
            FREE (dinfo);
            return NULL;
        }
    }

    DOC_CMD(objCmdName, doc);
    if (flags & TCL_TRACE_WRITES) {
        Tcl_TraceVar2(interp,"__tdomGC", objCmdName, TCL_TRACE_UNSETS,
                     (Tcl_VarTraceProc*)tcldom_docTrace,
                     clientData);