Tcl Source Code

Check-in [f274e1f1ba]
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2019 Conference, Houston/TX, US, Nov 4-8
Send your abstracts to [email protected]
or submit via the online form by Sep 9.

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

Overview
Comment:Fix for [ba921a8d98e02a96] - concatenating binary array with empty string yields the empty string.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | core-8-branch
Files: files | file ages | folders
SHA3-256: f274e1f1baf02516414c32807d9424d8aae67223506ef8c0a1688fd9071d62d5
User & Date: pooryorick 2018-07-22 20:44:16
References
2018-07-22
20:46 Ticket [ba921a8d98] concatenating binary array with empty string yields the empty string status still Open with 3 other changes artifact: 0f28248863 user: pooryorick
Context
2018-07-25
01:43
Resolve inadvertent fork check-in: fc9e243e02 user: kbk tags: core-8-branch
2018-07-22
20:44
Fix for [ba921a8d98e02a96] - concatenating binary array with empty string yields the empty string. check-in: f274e1f1ba user: pooryorick tags: core-8-branch
2018-07-20
16:05
merge 8.6 check-in: 29189acca8 user: sebres tags: core-8-branch
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to generic/tclStringObj.c.

3061
3062
3063
3064
3065
3066
3067

3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
    } while (--oc && (binary || allowUniChar));

    if (binary) {
	/*
	 * Result will be pure byte array. Pre-size it
	 */


	ov = objv;
	oc = objc;
	do {
	    Tcl_Obj *objPtr = *ov++;

	    if (objPtr->bytes == NULL) {
		int numBytes;

		Tcl_GetByteArrayFromObj(objPtr, &numBytes); /* PANIC? */
		if (numBytes) {
		    last = objc - oc;
		    if (length == 0) {
			first = last;
		    } else if (numBytes > INT_MAX - length) {
			goto overflow;
		    }
		    length += numBytes;
		}
	    }
	} while (--oc);
    } else if (allowUniChar && requestUniChar) {
	/*
	 * Result will be pure Tcl_UniChar array. Pre-size it.
	 */







>





|
<

<
|
|
|
|
|
|
|
|
<







3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074

3075

3076
3077
3078
3079
3080
3081
3082
3083

3084
3085
3086
3087
3088
3089
3090
    } while (--oc && (binary || allowUniChar));

    if (binary) {
	/*
	 * Result will be pure byte array. Pre-size it
	 */

	int numBytes;
	ov = objv;
	oc = objc;
	do {
	    Tcl_Obj *objPtr = *ov++;

	    Tcl_GetByteArrayFromObj(objPtr, &numBytes); /* PANIC? */



	    if (numBytes) {
		last = objc - oc;
		if (length == 0) {
		    first = last;
		} else if (numBytes > INT_MAX - length) {
		    goto overflow;
		}
		length += numBytes;

	    }
	} while (--oc);
    } else if (allowUniChar && requestUniChar) {
	/*
	 * Result will be pure Tcl_UniChar array. Pre-size it.
	 */