summaryrefslogtreecommitdiffstats
path: root/generic/tclLiteral.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2019-02-05 21:35:10 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2019-02-05 21:35:10 (GMT)
commit2dad23ad65d5cf76fa7e2516a6702a8a6ff34723 (patch)
tree0b80be8eba412258b3fa4c109b6b554863d27378 /generic/tclLiteral.c
parenteee14742522aed25744851879c80a96134de7369 (diff)
downloadtcl-2dad23ad65d5cf76fa7e2516a6702a8a6ff34723.zip
tcl-2dad23ad65d5cf76fa7e2516a6702a8a6ff34723.tar.gz
tcl-2dad23ad65d5cf76fa7e2516a6702a8a6ff34723.tar.bz2
More size_t-related consolidations. Now regexp can handle strings >2GB and more. Remove many type-casts which are not necessary any more.
Diffstat (limited to 'generic/tclLiteral.c')
-rw-r--r--generic/tclLiteral.c31
1 files changed, 12 insertions, 19 deletions
diff --git a/generic/tclLiteral.c b/generic/tclLiteral.c
index 3ece98b..8c85bbe 100644
--- a/generic/tclLiteral.c
+++ b/generic/tclLiteral.c
@@ -213,7 +213,7 @@ TclCreateLiteral(
if ((objLength == length) && ((length == 0)
|| ((objBytes[0] == bytes[0])
- && (memcmp(objBytes, bytes, (unsigned) length) == 0)))) {
+ && (memcmp(objBytes, bytes, length) == 0)))) {
/*
* A literal was found: return it
*/
@@ -422,7 +422,7 @@ TclRegisterLiteral(
for (localPtr=localTablePtr->buckets[localHash] ; localPtr!=NULL;
localPtr = localPtr->nextPtr) {
objPtr = localPtr->objPtr;
- if (((size_t)objPtr->length == length) && ((length == 0)
+ if ((objPtr->length == length) && ((length == 0)
|| ((objPtr->bytes[0] == bytes[0])
&& (memcmp(objPtr->bytes, bytes, length) == 0)))) {
if ((flags & LITERAL_ON_HEAP)) {
@@ -504,10 +504,10 @@ LookupLiteralEntry(
LiteralTable *globalTablePtr = &iPtr->literalTable;
register LiteralEntry *entryPtr;
const char *bytes;
- size_t globalHash;
+ size_t globalHash, length;
- bytes = TclGetString(objPtr);
- globalHash = (HashString(bytes, objPtr->length) & globalTablePtr->mask);
+ bytes = TclGetStringFromObj(objPtr, &length);
+ globalHash = (HashString(bytes, length) & globalTablePtr->mask);
for (entryPtr=globalTablePtr->buckets[globalHash] ; entryPtr!=NULL;
entryPtr=entryPtr->nextPtr) {
if (entryPtr->objPtr == objPtr) {
@@ -549,8 +549,7 @@ TclHideLiteral(
{
LiteralEntry **nextPtrPtr, *entryPtr, *lPtr;
LiteralTable *localTablePtr = &envPtr->localLitTable;
- size_t localHash;
- size_t length;
+ size_t localHash, length;
const char *bytes;
Tcl_Obj *newObjPtr;
@@ -568,8 +567,7 @@ TclHideLiteral(
TclReleaseLiteral(interp, lPtr->objPtr);
lPtr->objPtr = newObjPtr;
- bytes = TclGetString(newObjPtr);
- length = newObjPtr->length;
+ bytes = TclGetStringFromObj(newObjPtr, &length);
localHash = HashString(bytes, length) & localTablePtr->mask;
nextPtrPtr = &localTablePtr->buckets[localHash];
@@ -702,8 +700,7 @@ AddLocalLiteralEntry(
}
if (!found) {
- bytes = TclGetString(objPtr);
- length = objPtr->length;
+ bytes = TclGetStringFromObj(objPtr, &length);
Tcl_Panic("%s: literal \"%.*s\" wasn't found locally",
"AddLocalLiteralEntry", (length>60? 60 : (int)length), bytes);
}
@@ -832,8 +829,7 @@ TclReleaseLiteral(
}
globalTablePtr = &iPtr->literalTable;
- bytes = TclGetString(objPtr);
- length = objPtr->length;
+ bytes = TclGetStringFromObj(objPtr, &length);
index = HashString(bytes, length) & globalTablePtr->mask;
/*
@@ -1004,8 +1000,7 @@ RebuildLiteralTable(
for (oldChainPtr=oldBuckets ; oldSize>0 ; oldSize--,oldChainPtr++) {
for (entryPtr=*oldChainPtr ; entryPtr!=NULL ; entryPtr=*oldChainPtr) {
- bytes = TclGetString(entryPtr->objPtr);
- length = entryPtr->objPtr->length;
+ bytes = TclGetStringFromObj(entryPtr->objPtr, &length);
index = (HashString(bytes, length) & tablePtr->mask);
*oldChainPtr = entryPtr->nextPtr;
@@ -1176,8 +1171,7 @@ TclVerifyLocalLiteralTable(
localPtr=localPtr->nextPtr) {
count++;
if (localPtr->refCount != TCL_AUTO_LENGTH) {
- bytes = TclGetString(localPtr->objPtr);
- length = localPtr->objPtr->length;
+ bytes = TclGetStringFromObj(localPtr->objPtr, &length);
Tcl_Panic("%s: local literal \"%.*s\" had bad refCount %" TCL_Z_MODIFIER "u",
"TclVerifyLocalLiteralTable",
(length>60? 60 : (int) length), bytes, localPtr->refCount);
@@ -1226,8 +1220,7 @@ TclVerifyGlobalLiteralTable(
globalPtr=globalPtr->nextPtr) {
count++;
if (globalPtr->refCount + 1 < 2) {
- bytes = TclGetString(globalPtr->objPtr);
- length = globalPtr->objPtr->length;
+ bytes = TclGetStringFromObj(globalPtr->objPtr, &length);
Tcl_Panic("%s: global literal \"%.*s\" had bad refCount %" TCL_Z_MODIFIER "d",
"TclVerifyGlobalLiteralTable",
(length>60? 60 : (int)length), bytes, globalPtr->refCount);