Diff
Not logged in

Differences From Artifact [d97f8b0c8b]:

To Artifact [c6776a4821]:


543
544
545
546
547
548
549
550
551
552
553
554
555






556
557
558
559
560


561
562

563
564
565
566
567
568
569
543
544
545
546
547
548
549






550
551
552
553
554
555





556
557


558
559
560
561
562
563
564
565







-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
+








    /*
     * Initialize bytes to start of the object's string rep if the caller
     * didn't pass anything else.
     */

    if (bytes == NULL) {
	if (interp == NULL && endPtrPtr == NULL) {
	    if (TclHasInternalRep(objPtr, &tclDictType)) {
		/* A dict can never be a (single) number */
		return TCL_ERROR;
	    }
	    if (TclHasInternalRep(objPtr, &tclListType)) {
	if (TclHasInternalRep(objPtr, &tclDictType)) {
	    /* A dict can never be a (single) number */
	    status = TCL_ERROR;
	    goto formaterr;
	}
	Tcl_ObjTypeLengthProc *lengthProc = TclObjTypeHasProc(objPtr, lengthProc);
		Tcl_Size length;
		/* A list can only be a (single) number if its length == 1 */
		TclListObjLength(NULL, objPtr, &length);
		if (length != 1) {
		    return TCL_ERROR;
	if (lengthProc && lengthProc(objPtr) > 1) {
	    status = TCL_ERROR;
		}
	    }
	    goto formaterr;
	}
	bytes = TclGetString(objPtr);
    }

    p = bytes;
    len = numBytes;
    acceptPoint = p;
1519
1520
1521
1522
1523
1524
1525

1526
1527
1528
1529
1530
1531
1532
1533
1534






1535
1536
1537
1538
1539
1540
1541
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527




1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540







+





-
-
-
-
+
+
+
+
+
+







	}
    }

    /*
     * Format an error message when an invalid number is encountered.
     */

formaterr:
    if (status != TCL_OK) {
	if (interp != NULL) {
	    Tcl_Obj *msg = Tcl_ObjPrintf("expected %s but got ",
		    expected);
	    Tcl_Size argc;
	    const char **argv;
	    if ((TclMaxListLength(bytes, TCL_INDEX_NONE, NULL) > 1)
		    && Tcl_SplitList(NULL, bytes, &argc, &argv) == TCL_OK) {
		Tcl_Free(argv);
	    const char **argv = NULL;
	    if (!bytes || ((TclMaxListLength(bytes, TCL_INDEX_NONE, NULL) > 1)
		    && Tcl_SplitList(NULL, bytes, &argc, &argv) == TCL_OK)) {
		if (argv) {
		    Tcl_Free(argv);
		}
		Tcl_AppendToObj(msg, "a list", -1);
	    } else {
		Tcl_AppendToObj(msg, "\"", -1);
		Tcl_AppendLimitedToObj(msg, bytes, numBytes, 50, "");
		Tcl_AppendToObj(msg, "\"", -1);
	    }
	    Tcl_SetObjResult(interp, msg);