Itk - the [incr Tk] extension

Check-in [9219eeba4c]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

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

Overview
Comment:Itk_ArchCompAddCmd(): Make sure old frame is restored even in error exit.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 9219eeba4c4214e72edf068eb1e27603255908a1
User & Date: dgp 2015-02-05 13:43:59
Context
2015-03-11
17:48
merge release check-in: c9fc24de31 user: dgp tags: trunk
2015-02-05
13:45
merge trunk check-in: 66a2f526df user: dgp tags: itk-4-0-1-rc
13:43
Itk_ArchCompAddCmd(): Make sure old frame is restored even in error exit. check-in: 9219eeba4c user: dgp tags: trunk
2015-01-30
18:48
Fix [ae14d0a924] by getting context for Itcl_GetInstanceVar() call right. check-in: 9922af6179 user: dgp tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/itkArchBase.c.

193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
...
336
337
338
339
340
341
342

343
344
345
346
347
348
349
...
542
543
544
545
546
547
548



549
550
551
552
553
554
555
    ItclClass *ownerClass;
    ItclObject *contextObj;
    ArchInfo *info;
    Tcl_Command accessCmd;
    Tcl_Obj *objPtr;
    Tcl_DString buffer;
    Tcl_CallFrame *uplevelFramePtr;
    Tcl_CallFrame *oldFramePtr;
    ItclObjectInfo *infoPtr;
    ItclCallContext *callContextPtr;

    /*
     *  Get the Archetype info associated with this widget.
     */
    contextClass = NULL;
................................................................................
           "cannot find component access command \"",
            path, "\" for component \"", name, "\"",
            (char*)NULL);
        goto compFail;
    }

    (void) Itcl_ActivateCallFrame(interp, oldFramePtr);

    winNamePtr = Tcl_NewStringObj((char*)NULL, 0);
    Tcl_GetCommandFullName(interp, accessCmd, winNamePtr);
    Tcl_IncrRefCount(winNamePtr);


    /*
     *  Create the component record.  Set the protection level
................................................................................
    Tcl_SetResult(interp, name, TCL_VOLATILE);
    return TCL_OK;

    /*
     *  If any errors were encountered, clean up and return.
     */
compFail:



    if (archComp) {
        Itk_DelArchComponent(archComp);
    }
    if (entry) {
        Tcl_DeleteHashEntry(entry);
    }
    if (path) {






|







 







>







 







>
>
>







193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
...
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
...
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
    ItclClass *ownerClass;
    ItclObject *contextObj;
    ArchInfo *info;
    Tcl_Command accessCmd;
    Tcl_Obj *objPtr;
    Tcl_DString buffer;
    Tcl_CallFrame *uplevelFramePtr;
    Tcl_CallFrame *oldFramePtr = NULL;
    ItclObjectInfo *infoPtr;
    ItclCallContext *callContextPtr;

    /*
     *  Get the Archetype info associated with this widget.
     */
    contextClass = NULL;
................................................................................
           "cannot find component access command \"",
            path, "\" for component \"", name, "\"",
            (char*)NULL);
        goto compFail;
    }

    (void) Itcl_ActivateCallFrame(interp, oldFramePtr);
    oldFramePtr = NULL;
    winNamePtr = Tcl_NewStringObj((char*)NULL, 0);
    Tcl_GetCommandFullName(interp, accessCmd, winNamePtr);
    Tcl_IncrRefCount(winNamePtr);


    /*
     *  Create the component record.  Set the protection level
................................................................................
    Tcl_SetResult(interp, name, TCL_VOLATILE);
    return TCL_OK;

    /*
     *  If any errors were encountered, clean up and return.
     */
compFail:
    if (oldFramePtr) {
	(void) Itcl_ActivateCallFrame(interp, oldFramePtr);
    }
    if (archComp) {
        Itk_DelArchComponent(archComp);
    }
    if (entry) {
        Tcl_DeleteHashEntry(entry);
    }
    if (path) {