Diff
Not logged in

Differences From Artifact [fac4ef5bea]:

To Artifact [9c9788ecc3]:


1526
1527
1528
1529
1530
1531
1532











1533
1534
1535
1536
1537
1538
1539
1540
1541
    /*
     * When we get here, the last formal argument remains to be defined:
     * defPtr and varPtr point to the last argument to be initialized.
     */

    varPtr->flags = 0;
    if (defPtr && defPtr->flags & VAR_IS_ARGS) {











	Tcl_Obj *listPtr = Tcl_NewListObj(argCt-i, argObjs+i);

	varPtr->value.objPtr = listPtr;
	Tcl_IncrRefCount(listPtr);	/* Local var is a reference. */
    } else if (argCt == numArgs) {
	Tcl_Obj *objPtr = argObjs[i];

	varPtr->value.objPtr = objPtr;
	Tcl_IncrRefCount(objPtr);	/* Local var is a reference. */







>
>
>
>
>
>
>
>
>
>
>
|
|







1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
    /*
     * When we get here, the last formal argument remains to be defined:
     * defPtr and varPtr point to the last argument to be initialized.
     */

    varPtr->flags = 0;
    if (defPtr && defPtr->flags & VAR_IS_ARGS) {
	Tcl_Obj *listPtr;

	/*
	 * Note that we can get the number of actual arguments (argCt) less
	 * than the current formal argument index (i) if there is a defaulted
	 * argument before 'args' that uses the default.
	 */

	if (argCt <= i) {
	    TclNewObj(listPtr);
	} else {
	    listPtr = Tcl_NewListObj(argCt-i, argObjs+i);
	}
	varPtr->value.objPtr = listPtr;
	Tcl_IncrRefCount(listPtr);	/* Local var is a reference. */
    } else if (argCt == numArgs) {
	Tcl_Obj *objPtr = argObjs[i];

	varPtr->value.objPtr = objPtr;
	Tcl_IncrRefCount(objPtr);	/* Local var is a reference. */