Tcl Source Code

Check-in [617acf8eb6]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Enable the no-copy path through narrowing that was overlooked.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | dgp-properbytearray
Files: files | file ages | folders
SHA1: 617acf8eb69fe55696200cb9be25cc342e1211cc
User & Date: dgp 2016-12-07 20:01:53
Context
2016-12-07
20:32
plug memory leak check-in: 58f7225908 user: dgp tags: dgp-properbytearray
20:01
Enable the no-copy path through narrowing that was overlooked. check-in: 617acf8eb6 user: dgp tags: dgp-properbytearray
19:52
Put explicit byte-narrowing in the write pipeline of -encoding binary channels. This makes tests pas... check-in: 236f5e4f11 user: dgp tags: dgp-properbytearray
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tclBinary.c.

485
486
487
488
489
490
491

492
493
494
495
496
497
498
499
500

501
502
503
504
505
506
507
    return proper;
}

Tcl_Obj *
TclNarrowToBytes(
    Tcl_Obj *objPtr)
{

    ByteArray *byteArrayPtr;

    if (0 == MakeByteArray(objPtr, 0, &byteArrayPtr)) {
	objPtr = Tcl_NewObj();
	TclInvalidateStringRep(objPtr);
    }
    TclFreeIntRep(objPtr);
    objPtr->typePtr = &properByteArrayType;
    SET_BYTEARRAY(objPtr, byteArrayPtr);

    Tcl_IncrRefCount(objPtr);
    return objPtr;
}

static int
SetByteArrayFromAny(
    Tcl_Interp *interp,		/* Not used. */







>
|

|
|
|
|
|
|
|
>







485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
    return proper;
}

Tcl_Obj *
TclNarrowToBytes(
    Tcl_Obj *objPtr)
{
    if (objPtr->typePtr != &properByteArrayType) {
	ByteArray *byteArrayPtr;

	if (0 == MakeByteArray(objPtr, 0, &byteArrayPtr)) {
	    objPtr = Tcl_NewObj();
	    TclInvalidateStringRep(objPtr);
	}
	TclFreeIntRep(objPtr);
	objPtr->typePtr = &properByteArrayType;
	SET_BYTEARRAY(objPtr, byteArrayPtr);
    }
    Tcl_IncrRefCount(objPtr);
    return objPtr;
}

static int
SetByteArrayFromAny(
    Tcl_Interp *interp,		/* Not used. */