summaryrefslogtreecommitdiffstats
path: root/generic/tclStringObj.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-02-04 22:45:59 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-02-04 22:45:59 (GMT)
commitb203ab7aabea8ebece5250e15db03f9c6f96c2b6 (patch)
tree431a3e4a40b1c759ee826f2954fb7ac70838c3a5 /generic/tclStringObj.c
parente9034f37542010a9dfeb054699ce1c9e74169f59 (diff)
parenteee14742522aed25744851879c80a96134de7369 (diff)
downloadtcl-b203ab7aabea8ebece5250e15db03f9c6f96c2b6.zip
tcl-b203ab7aabea8ebece5250e15db03f9c6f96c2b6.tar.gz
tcl-b203ab7aabea8ebece5250e15db03f9c6f96c2b6.tar.bz2
Merge trunk
Diffstat (limited to 'generic/tclStringObj.c')
-rw-r--r--generic/tclStringObj.c60
1 files changed, 20 insertions, 40 deletions
diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c
index ab48b1d..8e3816b 100644
--- a/generic/tclStringObj.c
+++ b/generic/tclStringObj.c
@@ -141,10 +141,8 @@ GrowStringBuffer(
objPtr->bytes = NULL;
}
if (flag == 0 || stringPtr->allocated > 0) {
- if (needed <= STRING_MAXCHARS / 2) {
- attempt = 2 * needed;
- ptr = Tcl_AttemptRealloc(objPtr->bytes, attempt + 1);
- }
+ attempt = 2 * needed;
+ ptr = Tcl_AttemptRealloc(objPtr->bytes, attempt + 1);
if (ptr == NULL) {
/*
* Take care computing the amount of modest growth to avoid
@@ -180,7 +178,6 @@ GrowUnicodeBuffer(
* Pre-conditions:
* objPtr->typePtr == &tclStringType
* needed > stringPtr->maxChars
- * needed < STRING_MAXCHARS
*/
String *ptr = NULL, *stringPtr = GET_STRING(objPtr);
@@ -191,22 +188,18 @@ GrowUnicodeBuffer(
* Subsequent appends - apply the growth algorithm.
*/
- if (needed <= STRING_MAXCHARS / 2) {
- attempt = 2 * needed;
- ptr = stringAttemptRealloc(stringPtr, attempt);
- }
+ attempt = 2 * needed;
+ ptr = stringAttemptRealloc(stringPtr, attempt);
if (ptr == NULL) {
/*
* Take care computing the amount of modest growth to avoid
* overflow into invalid argument values for attempt.
*/
- size_t limit = STRING_MAXCHARS - needed;
size_t extra = needed - stringPtr->numChars
+ TCL_MIN_UNICHAR_GROWTH;
- size_t growth = (extra > limit) ? limit : extra;
- attempt = needed + growth;
+ attempt = needed + extra;
ptr = stringAttemptRealloc(stringPtr, attempt);
}
}
@@ -854,11 +847,6 @@ Tcl_SetObjLength(
stringPtr->numChars = TCL_AUTO_LENGTH;
stringPtr->hasUnicode = 0;
} else {
- /*
- * Changing length of pure unicode string.
- */
-
- stringCheckLimits(length);
if (length > stringPtr->maxChars) {
stringPtr = stringRealloc(stringPtr, length);
SET_STRING(objPtr, stringPtr);
@@ -960,9 +948,6 @@ Tcl_AttemptSetObjLength(
* Changing length of pure unicode string.
*/
- if (length > STRING_MAXCHARS) {
- return 0;
- }
if (length > stringPtr->maxChars) {
stringPtr = stringAttemptRealloc(stringPtr, length);
if (stringPtr == NULL) {
@@ -1030,7 +1015,6 @@ UnicodeLength(
numChars++;
}
}
- stringCheckLimits(numChars);
return numChars;
}
@@ -1052,7 +1036,6 @@ SetUnicodeObj(
* Allocate enough space for the String structure + Unicode string.
*/
- stringCheckLimits(numChars);
stringPtr = stringAlloc(numChars);
SET_STRING(objPtr, stringPtr);
objPtr->typePtr = &tclStringType;
@@ -1419,7 +1402,6 @@ AppendUnicodeToUnicodeRep(
*/
numChars = stringPtr->numChars + appendNumChars;
- stringCheckLimits(numChars);
if (numChars > stringPtr->maxChars) {
size_t offset = TCL_AUTO_LENGTH;
@@ -2642,7 +2624,7 @@ AppendPrintfToObjVA(
if (code != TCL_OK) {
Tcl_AppendPrintfToObj(objPtr,
"Unable to format \"%s\" with supplied arguments: %s",
- format, Tcl_GetString(list));
+ format, TclGetString(list));
}
Tcl_DecrRefCount(list);
}
@@ -2784,10 +2766,10 @@ TclStringRepeat(
if (binary) {
/* Result will be pure byte array. Pre-size it */
- TclGetByteArrayFromObj(objPtr, &length);
+ (void)TclGetByteArrayFromObj(objPtr, &length);
} else if (unichar) {
/* Result will be pure Tcl_UniChar array. Pre-size it. */
- TclGetUnicodeFromObj(objPtr, &length);
+ (void)TclGetUnicodeFromObj(objPtr, &length);
} else {
/* Result will be concat of string reps. Pre-size it. */
(void)TclGetStringFromObj(objPtr, &length);
@@ -2856,7 +2838,7 @@ TclStringRepeat(
*/
if (!inPlace || Tcl_IsShared(objPtr)) {
- objResultPtr = Tcl_NewStringObj(Tcl_GetString(objPtr), length);
+ objResultPtr = Tcl_NewStringObj(TclGetString(objPtr), length);
} else {
TclFreeIntRep(objPtr);
objResultPtr = objPtr;
@@ -2875,7 +2857,7 @@ TclStringRepeat(
Tcl_AppendObjToObj(objResultPtr, objResultPtr);
done *= 2;
}
- Tcl_AppendToObj(objResultPtr, Tcl_GetString(objResultPtr),
+ Tcl_AppendToObj(objResultPtr, TclGetString(objResultPtr),
(count - done) * length);
}
return objResultPtr;
@@ -2980,7 +2962,7 @@ TclStringCat(
*/
if (TclIsPureByteArray(objPtr)) {
- TclGetByteArrayFromObj(objPtr, &numBytes); /* PANIC? */
+ (void)TclGetByteArrayFromObj(objPtr, &numBytes); /* PANIC? */
if (numBytes) {
last = objc - oc;
@@ -3004,7 +2986,7 @@ TclStringCat(
if ((objPtr->bytes == NULL) || (objPtr->length)) {
size_t numChars;
- TclGetUnicodeFromObj(objPtr, &numChars); /* PANIC? */
+ (void)TclGetUnicodeFromObj(objPtr, &numChars); /* PANIC? */
if (numChars) {
last = objc - oc;
if (length == 0) {
@@ -3061,8 +3043,7 @@ TclStringCat(
do {
Tcl_Obj *objPtr = *ov++;
- Tcl_GetString(objPtr); /* PANIC? */
- numBytes = objPtr->length;
+ (void)TclGetStringFromObj(objPtr, &numBytes); /* PANIC? */
} while (--oc && numBytes == 0 && pendingPtr->bytes == NULL);
if (numBytes) {
@@ -3088,7 +3069,7 @@ TclStringCat(
/* assert ( length > 0 && pendingPtr == NULL ) */
- Tcl_GetString(objPtr); /* PANIC? */
+ TclGetString(objPtr); /* PANIC? */
numBytes = objPtr->length;
if (numBytes) {
last = objc - oc;
@@ -3122,7 +3103,7 @@ TclStringCat(
size_t start;
objResultPtr = *objv++; objc--;
- TclGetByteArrayFromObj(objResultPtr, &start);
+ (void)TclGetByteArrayFromObj(objResultPtr, &start);
dst = Tcl_SetByteArrayLength(objResultPtr, length) + start;
} else {
objResultPtr = Tcl_NewByteArrayObj(NULL, length);
@@ -3154,7 +3135,7 @@ TclStringCat(
objResultPtr = *objv++; objc--;
/* Ugly interface! Force resize of the unicode array. */
- TclGetUnicodeFromObj(objResultPtr, &start);
+ (void)TclGetUnicodeFromObj(objResultPtr, &start);
Tcl_InvalidateStringRep(objResultPtr);
if (0 == Tcl_AttemptSetObjLength(objResultPtr, length)) {
if (interp) {
@@ -3214,7 +3195,7 @@ TclStringCat(
}
return NULL;
}
- dst = Tcl_GetString(objResultPtr) + start;
+ dst = TclGetString(objResultPtr) + start;
/* assert ( length > start ) */
TclFreeIntRep(objResultPtr);
@@ -3230,7 +3211,7 @@ TclStringCat(
}
return NULL;
}
- dst = Tcl_GetString(objResultPtr);
+ dst = TclGetString(objResultPtr);
}
while (objc--) {
Tcl_Obj *objPtr = *objv++;
@@ -3239,7 +3220,7 @@ TclStringCat(
size_t more;
char *src = TclGetStringFromObj(objPtr, &more);
- memcpy(dst, src, (size_t) more);
+ memcpy(dst, src, more);
dst += more;
}
}
@@ -3429,7 +3410,7 @@ TclStringCmp(
* length only.
*/
- match = memCmpFn(s1, s2, (size_t) length);
+ match = memCmpFn(s1, s2, length);
}
if ((match == 0) && (reqlength > length)) {
match = s1len - s2len;
@@ -3959,7 +3940,6 @@ ExtendUnicodeRepWithString(
TclNumUtfChars(numAppendChars, bytes, numBytes);
}
needed = numOrigChars + numAppendChars;
- stringCheckLimits(needed);
if (needed > stringPtr->maxChars) {
GrowUnicodeBuffer(objPtr, needed);