Diff
Not logged in

Differences From Artifact [b34927179e]:

To Artifact [3534209d65]:


826
827
828
829
830
831
832
833

834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
826
827
828
829
830
831
832

833

834
835





836
837
838
839
840
841
842







-
+
-


-
-
-
-
-







	    localPtr->flags |= VAR_NAMED_GROUP;
	} else if ((length == 6)
		&& (fieldValues[i][1] == 'v')
		&& (strcmp(fieldValues[i], "-value") == 0)) {

	    /*
	     * Handle '-value value'. Must only be specified inside
	     * a name group and if a default option has already been
	     * a name group.
	     * set.
	     */

	    if (localPtr->defValuePtr == NULL) {
		Tcl_SetObjResult(interp, Tcl_NewStringObj(
			"-default required for -value", -1));
		goto parseError;
	    }
	    if (lastArgSpecPtr == NULL) {
		Tcl_SetObjResult(interp, Tcl_NewStringObj(
			"-name required for -value", -1));
		goto parseError;
	    }
	    if (lastArgSpecPtr->valuePtr != NULL) {
		Tcl_DecrRefCount(lastArgSpecPtr->valuePtr);
1863
1864
1865
1866
1867
1868
1869
1870

1871
1872
1873
1874
1875
1876
1877
1857
1858
1859
1860
1861
1862
1863

1864
1865
1866
1867
1868
1869
1870
1871







-
+







    Tcl_Obj *procNameObj,	/* Procedure name for error reporting. */
    Tcl_Obj *const *argObjs,	/* Array of input arguments */
    int argCt)			/* Number of input arguments */
{
    CallFrame *framePtr = ((Interp *)interp)->varFramePtr;
    register Proc *procPtr = framePtr->procPtr;
    register Var *varPtr = framePtr->compiledLocals;
    int numArgs = procPtr->numArgs, i, iLocal, iArg;
    int numArgs = procPtr->numArgs, iLocal, iArg;
    Tcl_Obj *objPtr;
    CompiledLocal *localPtr, *namedLocalPtr;
    ExtendedArgSpec *argSpecPtr;
    int optLength, result;
    const char *optStr;

    for (iLocal = 0, iArg = 0, localPtr = procPtr->firstLocalPtr;
1896
1897
1898
1899
1900
1901
1902

1903

1904
1905
1906
1907
1908
1909
1910
1890
1891
1892
1893
1894
1895
1896
1897

1898
1899
1900
1901
1902
1903
1904
1905







+
-
+







	     * Start of a named argument group. Handle all of them together.
	     */

	    for (; iArg < argCt; iArg++) {
		optStr = TclGetString(argObjs[iArg]);

		if (*optStr != '-') {
		    /* argument without leading dash, end named group */
		    return TCL_ERROR;
		    break;
		}

		optStr++;
		optLength = strlen(optStr);

		if ((optLength == 1) && (optStr[0] == '-')) {
		    /* end-of-option marker (--) */
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2778
2779
2780
2781
2782
2783
2784

2785
2786
2787
2788
2789
2790
2791







-







 *----------------------------------------------------------------------
 */

void
TclProcCleanupProc(
    register Proc *procPtr)	/* Procedure to be deleted. */
{
    register CompiledLocal *localPtr;
    Tcl_Obj *bodyPtr = procPtr->bodyPtr;
    Tcl_HashEntry *hePtr = NULL;
    CmdFrame *cfPtr = NULL;
    Interp *iPtr = procPtr->iPtr;

    if (bodyPtr != NULL) {
	Tcl_DecrRefCount(bodyPtr);