diff options
| author | dgp <dgp@users.sourceforge.net> | 2017-06-16 12:56:03 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2017-06-16 12:56:03 (GMT) |
| commit | 9ddb31d52221fb3db41becc2bd840658338f73e6 (patch) | |
| tree | 29e16803b99e27bb3b4a3dd5c5276f853df0e79e /generic/tclStringObj.c | |
| parent | 6123ba004cf246d014231b6030560c8b9cae3934 (diff) | |
| download | tcl-9ddb31d52221fb3db41becc2bd840658338f73e6.zip tcl-9ddb31d52221fb3db41becc2bd840658338f73e6.tar.gz tcl-9ddb31d52221fb3db41becc2bd840658338f73e6.tar.bz2 | |
Extend cases where string rep generation can be prevented.
Diffstat (limited to 'generic/tclStringObj.c')
| -rw-r--r-- | generic/tclStringObj.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 0a38836..261e01f 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -2966,9 +2966,25 @@ TclStringCatObjv( Tcl_GetStringFromObj(objPtr, &numBytes); /* PANIC? */ if (numBytes == 0) { + if (pendingPtr && pendingPtr->bytes) { + /* + * Generating string rep of objPtr also + * generated string rep of pendingPtr. + */ + if (pendingPtr->length) { + /* Can this happen? */ + goto foo; + } else { + /* string-29.14 */ + first = objc - 1; + last = 0; + pendingPtr = NULL; + } + } continue; } last = objc - oc; +foo: if (pendingPtr) { Tcl_GetStringFromObj(pendingPtr, &length); /* PANIC? */ pendingPtr = NULL; |
