Diff
Not logged in

Differences From Artifact [0618f244da]:

To Artifact [c633e8787c]:


527
528
529
530
531
532
533

534

535
536
537
538
539
540
541
542
543
544
545
546
547


548
549
550
551
552
553
554
527
528
529
530
531
532
533
534

535
536
537
538
539
540
541
542
543
544
545
546
547

548
549
550
551
552
553
554
555
556







+
-
+












-
+
+







 */

static int
SetByteArrayFromAny(
    Tcl_Interp *interp,		/* Not used. */
    Tcl_Obj *objPtr)		/* The object to convert to type ByteArray. */
{
    size_t length;
    int length, improper = 0;
    int improper = 0;
    const char *src, *srcEnd;
    unsigned char *dst;
    ByteArray *byteArrayPtr;
    Tcl_UniChar ch;

    if (objPtr->typePtr == &properByteArrayType) {
	return TCL_OK;
    }
    if (objPtr->typePtr == &tclByteArrayType) {
	return TCL_OK;
    }

    src = TclGetStringFromObj(objPtr, &length);
    src = TclGetString(objPtr);
    length = objPtr->length;
    srcEnd = src + length;

    byteArrayPtr = ckalloc(BYTEARRAY_SIZE(length));
    for (dst = byteArrayPtr->bytes; src < srcEnd; ) {
	src += Tcl_UtfToUniChar(src, &ch);
	improper = improper || (ch > 255);
	*dst++ = UCHAR(ch);