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
	    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
	     * 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);







|
<


<
<
<
<
<







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.

	     */






	    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
    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;
    Tcl_Obj *objPtr;
    CompiledLocal *localPtr, *namedLocalPtr;
    ExtendedArgSpec *argSpecPtr;
    int optLength, result;
    const char *optStr;

    for (iLocal = 0, iArg = 0, localPtr = procPtr->firstLocalPtr;







|







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, 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
	     * Start of a named argument group. Handle all of them together.
	     */

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

		if (*optStr != '-') {

		    return TCL_ERROR;
		}

		optStr++;
		optLength = strlen(optStr);

		if ((optLength == 1) && (optStr[0] == '-')) {
		    /* end-of-option marker (--) */







>
|







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 */
		    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
 *----------------------------------------------------------------------
 */

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);







<







2778
2779
2780
2781
2782
2783
2784

2785
2786
2787
2788
2789
2790
2791
 *----------------------------------------------------------------------
 */

void
TclProcCleanupProc(
    register Proc *procPtr)	/* Procedure to be deleted. */
{

    Tcl_Obj *bodyPtr = procPtr->bodyPtr;
    Tcl_HashEntry *hePtr = NULL;
    CmdFrame *cfPtr = NULL;
    Interp *iPtr = procPtr->iPtr;

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