Diff
Not logged in

Differences From Artifact [9e169ec545]:

To Artifact [972dec96ec]:


1
2
3
4
5
6
7
8
9
10
11

12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
18










-
+







/*
 * tclOOMethod.c --
 *
 *	This file contains code to create and manage methods.
 *
 * Copyright (c) 2005-2008 by Donal K. Fellows
 *
 * See the file "license.terms" for information on usage and redistribution of
 * this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: @(#) $Id: tclOOMethod.c,v 1.12 2008/08/09 00:15:09 das Exp $
 * RCS: @(#) $Id: tclOOMethod.c,v 1.13 2008/08/12 17:51:03 dgp Exp $
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "tclInt.h"
#include "tclOOInt.h"
783
784
785
786
787
788
789




790

791
792
793
794
795
796
797
798
799
800
801
802
803
804
783
784
785
786
787
788
789
790
791
792
793

794
795
796
797
798
799
800

801
802
803
804
805
806
807







+
+
+
+
-
+






-








    fdPtr->efi.length = 2;
    memset(&fdPtr->cmd, 0, sizeof(Command));
    fdPtr->cmd.nsPtr = (Namespace *) nsPtr;
    fdPtr->cmd.clientData = &fdPtr->efi;
    pmPtr->procPtr->cmdPtr = &fdPtr->cmd;

    /* 
     * [Bug 2037727] Always call TclProcCompileProc so that we check not
     * only that we have bytecode, but also that it remains valid.
     */
    if (pmPtr->procPtr->bodyPtr->typePtr != &tclByteCodeType) {

	result = TclProcCompileProc(interp, pmPtr->procPtr,
		pmPtr->procPtr->bodyPtr, (Namespace *) nsPtr,
		"body of method", namePtr);
	if (result != TCL_OK) {
	    return result;
	}
    }

    /*
     * Make the stack frame and fill it out with information about this call.
     * This operation may fail.
     */

    result = TclPushStackFrame(interp, (Tcl_CallFrame **) framePtrPtr, nsPtr,