summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2017-11-15 13:39:12 (GMT)
committerdgp <dgp@users.sourceforge.net>2017-11-15 13:39:12 (GMT)
commit8a227678b234219b0301c75a977c09b1b0daafd0 (patch)
tree0f7670a598c66c8b244614d933c1c933b77785d0
parentc7c8527ce3b68e777b0ddc925fc254baf1861fda (diff)
parent346cce57455de92d12fcef5ea4115a9657458b84 (diff)
downloadtcl-8a227678b234219b0301c75a977c09b1b0daafd0.zip
tcl-8a227678b234219b0301c75a977c09b1b0daafd0.tar.gz
tcl-8a227678b234219b0301c75a977c09b1b0daafd0.tar.bz2
merge 8.7
-rw-r--r--compat/float.h14
-rw-r--r--generic/tclBasic.c2
-rw-r--r--generic/tclDictObj.c9
-rw-r--r--generic/tclIndexObj.c3
-rw-r--r--generic/tclInt.h4
-rw-r--r--generic/tclListObj.c6
-rw-r--r--generic/tclPkg.c6
-rw-r--r--generic/tclUtil.c27
-rwxr-xr-xunix/configure10
-rw-r--r--unix/tcl.m41
-rw-r--r--unix/tclConfig.h.in3
-rw-r--r--unix/tclUnixPort.h5
-rw-r--r--win/tcl.dsp4
-rw-r--r--win/tclWinThrd.c2
14 files changed, 21 insertions, 75 deletions
diff --git a/compat/float.h b/compat/float.h
deleted file mode 100644
index 411edbf..0000000
--- a/compat/float.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * float.h --
- *
- * This is a dummy header file to #include in Tcl when there
- * is no float.h in /usr/include. Right now this file is empty:
- * Tcl contains #ifdefs to deal with the lack of definitions;
- * all it needs is for the #include statement to work.
- *
- * Copyright (c) 1993 The Regents of the University of California.
- * Copyright (c) 1994 Sun Microsystems, Inc.
- *
- * See the file "license.terms" for information on usage and redistribution
- * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
- */
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 5362346..1a0c256 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -7753,7 +7753,7 @@ ExprRandFunc(
iPtr->flags |= RAND_SEED_INITIALIZED;
/*
- * To ensure different seeds in different threads (bug #416643),
+ * To ensure different seeds in different threads (bug #416643),
* take into consideration the thread this interp is running in.
*/
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) {
/*
diff --git a/generic/tclIndexObj.c b/generic/tclIndexObj.c
index 23b9637..c39c0dc 100644
--- a/generic/tclIndexObj.c
+++ b/generic/tclIndexObj.c
@@ -883,7 +883,8 @@ Tcl_WrongNumArgs(
* NULL. */
{
Tcl_Obj *objPtr;
- int i, len, elemLen, flags;
+ int i, len, elemLen;
+ char flags;
Interp *iPtr = (Interp *) interp;
const char *elementStr;
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 6945f93..17eb54b 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -2922,7 +2922,7 @@ MODULE_SCOPE int TclFindDictElement(Tcl_Interp *interp,
const char *dict, int dictLength,
const char **elementPtr, const char **nextPtr,
int *sizePtr, int *literalPtr);
-/* TIP #280 - Modified token based evulation, with line information. */
+/* TIP #280 - Modified token based evaluation, with line information. */
MODULE_SCOPE int TclEvalEx(Tcl_Interp *interp, const char *script,
int numBytes, int flags, int line,
int *clNextOuter, const char *outerScript);
@@ -3147,7 +3147,7 @@ MODULE_SCOPE int TclReToGlob(Tcl_Interp *interp, const char *reStr,
int reStrLen, Tcl_DString *dsPtr, int *flagsPtr,
int *quantifiersFoundPtr);
MODULE_SCOPE int TclScanElement(const char *string, int length,
- int *flagPtr);
+ char *flagPtr);
MODULE_SCOPE void TclSetBgErrorHandler(Tcl_Interp *interp,
Tcl_Obj *cmdPrefix);
MODULE_SCOPE void TclSetBignumIntRep(Tcl_Obj *objPtr,
diff --git a/generic/tclListObj.c b/generic/tclListObj.c
index c6d8d0e..a312f4c 100644
--- a/generic/tclListObj.c
+++ b/generic/tclListObj.c
@@ -2039,8 +2039,8 @@ static void
UpdateStringOfList(
Tcl_Obj *listPtr) /* List object with string rep to update. */
{
-# define LOCAL_SIZE 20
- int localFlags[LOCAL_SIZE], *flagPtr = NULL;
+# define LOCAL_SIZE 64
+ char localFlags[LOCAL_SIZE], *flagPtr = NULL;
int numElems, i, length, bytesNeeded = 0;
const char *elem;
char *dst;
@@ -2081,7 +2081,7 @@ UpdateStringOfList(
* We know numElems <= LIST_MAX, so this is safe.
*/
- flagPtr = ckalloc(numElems * sizeof(int));
+ flagPtr = ckalloc(numElems);
}
elemPtrs = &listRepPtr->elements;
for (i = 0; i < numElems; i++) {
diff --git a/generic/tclPkg.c b/generic/tclPkg.c
index ea95320..fb721a0 100644
--- a/generic/tclPkg.c
+++ b/generic/tclPkg.c
@@ -480,7 +480,7 @@ PkgRequireCore(
continue;
}
-
+
/* Check satisfaction of requirements before considering the current version further. */
if (reqc > 0) {
satisfies = SomeRequirementSatisfied(availVersion, reqc, reqv);
@@ -490,7 +490,7 @@ PkgRequireCore(
continue;
}
}
-
+
if (bestPtr != NULL) {
int res = CompareVersions(availVersion, bestVersion, NULL);
@@ -547,7 +547,7 @@ PkgRequireCore(
/*
* Clean up memorized internal reps, if any.
*/
-
+
if (bestVersion != NULL) {
ckfree(bestVersion);
bestVersion = NULL;
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index 8d1afc6..e5a54c5 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -973,7 +973,7 @@ Tcl_ScanCountedElement(
int *flagPtr) /* Where to store information to guide
* Tcl_ConvertElement. */
{
- int flags = CONVERT_ANY;
+ char flags = CONVERT_ANY;
int numBytes = TclScanElement(src, length, &flags);
*flagPtr = flags;
@@ -1014,7 +1014,7 @@ int
TclScanElement(
const char *src, /* String to convert to Tcl list element. */
int length, /* Number of bytes in src, or -1. */
- int *flagPtr) /* Where to store information to guide
+ char *flagPtr) /* Where to store information to guide
* Tcl_ConvertElement. */
{
const char *p = src;
@@ -1546,11 +1546,10 @@ Tcl_Merge(
int argc, /* How many strings to merge. */
const char *const *argv) /* Array of string values. */
{
-#define LOCAL_SIZE 20
- int localFlags[LOCAL_SIZE], *flagPtr = NULL;
+#define LOCAL_SIZE 64
+ char localFlags[LOCAL_SIZE], *flagPtr = NULL;
int i, bytesNeeded = 0;
char *result, *dst;
- const int maxFlags = UINT_MAX / sizeof(int);
/*
* Handle empty list case first, so logic of the general case can be
@@ -1569,22 +1568,8 @@ Tcl_Merge(
if (argc <= LOCAL_SIZE) {
flagPtr = localFlags;
- } else if (argc > maxFlags) {
- /*
- * We cannot allocate a large enough flag array to format this list in
- * one pass. We could imagine converting this routine to a multi-pass
- * implementation, but for sizeof(int) == 4, the limit is a max of
- * 2^30 list elements and since each element is at least one byte
- * formatted, and requires one byte space between it and the next one,
- * that a minimum space requirement of 2^31 bytes, which is already
- * INT_MAX. If we tried to format a list of > maxFlags elements, we're
- * just going to overflow the size limits on the formatted string
- * anyway, so just issue that same panic early.
- */
-
- Tcl_Panic("max size for a Tcl value (%d bytes) exceeded", INT_MAX);
} else {
- flagPtr = ckalloc(argc * sizeof(int));
+ flagPtr = ckalloc(argc);
}
for (i = 0; i < argc; i++) {
flagPtr[i] = ( i ? TCL_DONT_QUOTE_HASH : 0 );
@@ -2716,7 +2701,7 @@ Tcl_DStringAppendElement(
{
char *dst = dsPtr->string + dsPtr->length;
int needSpace = TclNeedSpace(dsPtr->string, dst);
- int flags = needSpace ? TCL_DONT_QUOTE_HASH : 0;
+ char flags = needSpace ? TCL_DONT_QUOTE_HASH : 0;
int newSize = dsPtr->length + needSpace
+ TclScanElement(element, -1, &flags);
diff --git a/unix/configure b/unix/configure
index 129c283..51d694f 100755
--- a/unix/configure
+++ b/unix/configure
@@ -3733,16 +3733,6 @@ $as_echo "#define NO_DIRENT_H 1" >>confdefs.h
fi
- ac_fn_c_check_header_mongrel "$LINENO" "float.h" "ac_cv_header_float_h" "$ac_includes_default"
-if test "x$ac_cv_header_float_h" = xyes; then :
-
-else
-
-$as_echo "#define NO_FLOAT_H 1" >>confdefs.h
-
-fi
-
-
ac_fn_c_check_header_mongrel "$LINENO" "values.h" "ac_cv_header_values_h" "$ac_includes_default"
if test "x$ac_cv_header_values_h" = xyes; then :
diff --git a/unix/tcl.m4 b/unix/tcl.m4
index 45922e0..9aa3eb2 100644
--- a/unix/tcl.m4
+++ b/unix/tcl.m4
@@ -2078,7 +2078,6 @@ closedir(d);
AC_DEFINE(NO_DIRENT_H, 1, [Do we have <dirent.h>?])
fi
- AC_CHECK_HEADER(float.h, , [AC_DEFINE(NO_FLOAT_H, 1, [Do we have <float.h>?])])
AC_CHECK_HEADER(values.h, , [AC_DEFINE(NO_VALUES_H, 1, [Do we have <values.h>?])])
AC_CHECK_HEADER(stdlib.h, tcl_ok=1, tcl_ok=0)
AC_EGREP_HEADER(strtol, stdlib.h, , tcl_ok=0)
diff --git a/unix/tclConfig.h.in b/unix/tclConfig.h.in
index adbc80d..28ce012 100644
--- a/unix/tclConfig.h.in
+++ b/unix/tclConfig.h.in
@@ -295,9 +295,6 @@
/* Do we have fd_set? */
#undef NO_FD_SET
-/* Do we have <float.h>? */
-#undef NO_FLOAT_H
-
/* Do we have fstatfs()? */
#undef NO_FSTATFS
diff --git a/unix/tclUnixPort.h b/unix/tclUnixPort.h
index ba56089..8b766d6 100644
--- a/unix/tclUnixPort.h
+++ b/unix/tclUnixPort.h
@@ -181,13 +181,10 @@ extern int TclUnixSetBlockingMode(int fd, int mode);
*---------------------------------------------------------------------------
*/
-#ifndef NO_FLOAT_H
-# include <float.h>
-#else
+#include <float.h>
#ifndef NO_VALUES_H
# include <values.h>
#endif
-#endif
#ifndef FLT_MAX
# ifdef MAXFLOAT
diff --git a/win/tcl.dsp b/win/tcl.dsp
index 48eae9d..ad9c764 100644
--- a/win/tcl.dsp
+++ b/win/tcl.dsp
@@ -152,10 +152,6 @@ SOURCE=..\compat\fixstrtod.c
# End Source File
# Begin Source File
-SOURCE=..\compat\float.h
-# End Source File
-# Begin Source File
-
SOURCE=..\compat\gettod.c
# End Source File
# Begin Source File
diff --git a/win/tclWinThrd.c b/win/tclWinThrd.c
index b9cde72..8c130a7 100644
--- a/win/tclWinThrd.c
+++ b/win/tclWinThrd.c
@@ -13,8 +13,6 @@
#include "tclWinInt.h"
-#include <float.h>
-
/* Workaround for mingw versions which don't provide this in float.h */
#ifndef _MCW_EM
# define _MCW_EM 0x0008001F /* Error masks */