diff options
| author | dgp <dgp@users.sourceforge.net> | 2017-11-15 13:39:12 (GMT) |
|---|---|---|
| committer | dgp <dgp@users.sourceforge.net> | 2017-11-15 13:39:12 (GMT) |
| commit | 8a227678b234219b0301c75a977c09b1b0daafd0 (patch) | |
| tree | 0f7670a598c66c8b244614d933c1c933b77785d0 /generic/tclDictObj.c | |
| parent | c7c8527ce3b68e777b0ddc925fc254baf1861fda (diff) | |
| parent | 346cce57455de92d12fcef5ea4115a9657458b84 (diff) | |
| download | tcl-8a227678b234219b0301c75a977c09b1b0daafd0.zip tcl-8a227678b234219b0301c75a977c09b1b0daafd0.tar.gz tcl-8a227678b234219b0301c75a977c09b1b0daafd0.tar.bz2 | |
merge 8.7
Diffstat (limited to 'generic/tclDictObj.c')
| -rw-r--r-- | generic/tclDictObj.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/generic/tclDictObj.c b/generic/tclDictObj.c index 9886e6a..dded150 100644 --- a/generic/tclDictObj.c +++ b/generic/tclDictObj.c @@ -496,15 +496,14 @@ static void UpdateStringOfDict( Tcl_Obj *dictPtr) { -#define LOCAL_SIZE 20 - int localFlags[LOCAL_SIZE], *flagPtr = NULL; +#define LOCAL_SIZE 64 + char localFlags[LOCAL_SIZE], *flagPtr = NULL; Dict *dict; ChainEntry *cPtr; Tcl_Obj *keyPtr, *valuePtr; int i, length, bytesNeeded = 0; const char *elem; char *dst; - const int maxFlags = UINT_MAX / sizeof(int); /* * This field is the most useful one in the whole hash structure, and it @@ -531,10 +530,8 @@ UpdateStringOfDict( if (numElems <= LOCAL_SIZE) { flagPtr = localFlags; - } else if (numElems > maxFlags) { - Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX); } else { - flagPtr = ckalloc(numElems * sizeof(int)); + flagPtr = ckalloc(numElems); } for (i=0,cPtr=dict->entryChainHead; i<numElems; i+=2,cPtr=cPtr->nextPtr) { /* |
