summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml15
-rw-r--r--generic/tclEncoding.c8
-rw-r--r--generic/tclTimer.c2
-rw-r--r--win/makefile.vc38
-rw-r--r--win/rules.vc31
-rw-r--r--win/tclWinFile.c7
6 files changed, 62 insertions, 39 deletions
diff --git a/.travis.yml b/.travis.yml
index e1580fa..419e62b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -94,13 +94,6 @@ matrix:
compiler: clang
env:
- BUILD_DIR=unix
- - name: "Linux/Clang/Shared: UTF_MAX=4"
- os: linux
- dist: xenial
- compiler: clang
- env:
- - BUILD_DIR=unix
- - CFGOPT=CFLAGS=-DTCL_UTF_MAX=4
- name: "Linux/Clang/Shared:NO_DEPRECATED"
os: linux
dist: xenial
@@ -237,8 +230,8 @@ matrix:
before_install: *vcpreinst
install: []
script:
- - cmd.exe /C 'vcvarsall.bat x64 && nmake OPTS=static -f makefile.vc all tcltest'
- - cmd.exe /C 'vcvarsall.bat x64 && nmake OPTS=static -f makefile.vc test'
+ - cmd.exe /C 'vcvarsall.bat x64 && nmake OPTS=static,msvcrt -f makefile.vc all tcltest'
+ - cmd.exe /C 'vcvarsall.bat x64 && nmake OPTS=static,msvcrt -f makefile.vc test'
- name: "Windows/MSVC/Debug"
os: windows
compiler: cl
@@ -283,8 +276,8 @@ matrix:
before_install: *vcpreinst
install: []
script:
- - cmd.exe /C 'vcvarsall.bat x86 && nmake OPTS=static -f makefile.vc all tcltest'
- - cmd.exe /C 'vcvarsall.bat x86 && nmake OPTS=static -f makefile.vc test'
+ - cmd.exe /C 'vcvarsall.bat x86 && nmake OPTS=static,msvcrt -f makefile.vc all tcltest'
+ - cmd.exe /C 'vcvarsall.bat x86 && nmake OPTS=static,msvcrt -f makefile.vc test'
- name: "Windows/MSVC-x86/Debug"
os: windows
compiler: cl
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 1e18ae5..475ec7c 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -622,13 +622,13 @@ TclInitEncodingSubsystem(void)
type.freeProc = NULL;
type.nullSize = 2;
type.encodingName = "utf-16le";
- type.clientData = INT2PTR(1);;
+ type.clientData = INT2PTR(1);
Tcl_CreateEncoding(&type);
type.encodingName = "utf-16be";
type.clientData = INT2PTR(0);
Tcl_CreateEncoding(&type);
type.encodingName = "utf-16";
- type.clientData = INT2PTR(isLe.c);;
+ type.clientData = INT2PTR(isLe.c);
Tcl_CreateEncoding(&type);
#ifndef TCL_NO_DEPRECATED
@@ -2409,13 +2409,13 @@ UtfToUtfProc(
dst += Tcl_UniCharToUtf(*chPtr, dst);
} else {
src += TclUtfToUniChar(src, chPtr);
- if ((*chPtr & 0xFC00) == 0xD800) {
+ if ((*chPtr | 0x3FF) == 0xDBFF) {
/* A high surrogate character is detected, handle especially */
Tcl_UniChar low = *chPtr;
if (src <= srcEnd-3) {
Tcl_UtfToUniChar(src, &low);
}
- if ((low & 0xFC00) != 0xDC00) {
+ if ((low | 0x3FF) != 0xDFFF) {
*dst++ = (char) (((*chPtr >> 12) | 0xE0) & 0xEF);
*dst++ = (char) (((*chPtr >> 6) | 0x80) & 0xBF);
*dst++ = (char) ((*chPtr | 0x80) & 0xBF);
diff --git a/generic/tclTimer.c b/generic/tclTimer.c
index 934b329..7e04b3e 100644
--- a/generic/tclTimer.c
+++ b/generic/tclTimer.c
@@ -892,7 +892,7 @@ Tcl_AfterObjCmd(
if (objc == 3) {
commandPtr = objv[2];
} else {
- commandPtr = Tcl_ConcatObj(objc-2, objv+2);;
+ commandPtr = Tcl_ConcatObj(objc-2, objv+2);
}
command = TclGetStringFromObj(commandPtr, &length);
for (afterPtr = assocPtr->firstAfterPtr; afterPtr != NULL;
diff --git a/win/makefile.vc b/win/makefile.vc
index 26504bc..5d85d55 100644
--- a/win/makefile.vc
+++ b/win/makefile.vc
@@ -52,30 +52,32 @@
# turn on the 64-bit compiler, if your SDK has it.
#
# Basic macros and options usable on the commandline (see rules.vc for more info):
-# OPTS=msvcrt,static,staticpkg,symbols,profile,unchecked,time64bit,utfmax,none
+# OPTS=msvcrt,nothreads,pdbs,profile,static,staticpkg,symbols,thrdalloc,time64bit,unchecked,utfmax,none
# Sets special options for the core. The default is for none.
# Any combination of the above may be used (comma separated).
# 'none' will over-ride everything to nothing.
#
-# msvcrt = Affects the static option only to switch it from
-# using libcmt(d) as the C runtime [by default] to
-# msvcrt(d). This is useful for static embedding
-# support.
-# static = Builds a static library of the core instead of a
-# dll. The shell will be static (and large), as well.
-# staticpkg= Affects the static option only to switch
-# tclshXX.exe to have the dde and reg extension linked
-# inside it.
+# msvcrt = Affects the static option only to switch it from
+# using libcmt(d) as the C runtime [by default] to
+# msvcrt(d). This is useful for static embedding
+# support.
+# nothreads = Turns off full multithreading support (default on).
+# pbds = Produce separate debug symbol files.
+# profile = Adds profiling hooks. Map file is assumed.
+# static = Builds a static library of the core instead of a
+# dll. The shell will be static (and large), as well.
+# staticpkg = Affects the static option only to switch
+# tclshXX.exe to have the dde and reg extension linked
+# inside it.
+# symbols = Adds symbols for step debugging.
# thrdalloc = Use the thread allocator (shared global free pool).
-# symbols = Adds symbols for step debugging.
-# profile = Adds profiling hooks. Map file is assumed.
-# unchecked = Allows a symbols build to not use the debug
-# enabled runtime (msvcrt.dll not msvcrtd.dll
-# or libcmt.lib not libcmtd.lib).
# time64bit = Forces a build using 64-bit time_t for 32-bit build
-# (CRT library should support this).
-# utfmax = Forces Tcl_UniChar to be a 32-bit quantity in stead
-# of 16-bits
+# (CRT library should support this).
+# unchecked = Allows a symbols build to not use the debug
+# enabled runtime (msvcrt.dll not msvcrtd.dll
+# or libcmt.lib not libcmtd.lib).
+# utfmax = Forces a build allowing 4-byte UTF-8 sequences
+# internally.
#
# STATS=compdbg,memdbg,none
# Sets optional memory and bytecode compiler debugging code added
diff --git a/win/rules.vc b/win/rules.vc
index b125047..d7431ef 100644
--- a/win/rules.vc
+++ b/win/rules.vc
@@ -746,6 +746,15 @@ TCL_USE_STATIC_PACKAGES = 1
TCL_USE_STATIC_PACKAGES = 0
!endif
+!if [nmakehlp -f $(OPTS) "nothreads"]
+!message *** Compile explicitly for non-threaded tcl
+TCL_THREADS = 0
+USE_THREAD_ALLOC= 0
+!else
+TCL_THREADS = 1
+USE_THREAD_ALLOC= 1
+!endif
+
!if [nmakehlp -f $(OPTS) "time64bit"]
!message *** Force 64-bit time_t
_USE_64BIT_TIME_T = 1
@@ -793,6 +802,12 @@ PGO = 0
!message *** Warning: ignoring option "loimpact" - deprecated on modern Windows.
!endif
+# TBD - should get rid of this option
+!if [nmakehlp -f $(OPTS) "thrdalloc"]
+!message *** Doing thrdalloc
+USE_THREAD_ALLOC = 1
+!endif
+
!if [nmakehlp -f $(OPTS) "tclalloc"]
USE_THREAD_ALLOC = 0
!endif
@@ -1337,11 +1352,11 @@ OPTDEFINES = $(OPTDEFINES) /DTCL_CFG_PROFILED
OPTDEFINES = $(OPTDEFINES) /DTCL_CFG_DO64BIT
!endif
!if $(VCVERSION) < 1300
-OPTDEFINES = $(OPTDEFINES) /DNO_STRTOI64
+OPTDEFINES = $(OPTDEFINES) /DNO_STRTOI64=1
!endif
!if "$(_USE_64BIT_TIME_T)" == "1"
-OPTDEFINES = $(OPTDEFINES) /D_USE_64BIT_TIME_T
+OPTDEFINES = $(OPTDEFINES) /D_USE_64BIT_TIME_T=1
!endif
!if "$(TCL_UTF_MAX)" == "6"
OPTDEFINES = $(OPTDEFINES) /DTCL_UTF_MAX=4
@@ -1473,6 +1488,18 @@ lflags = -nologo -machine:$(MACHINE) $(LINKERFLAGS) $(ldebug)
lflags = $(lflags) -nodefaultlib:libucrt.lib
!endif
+# Old linkers (Visual C++ 6 in particular) will link for fast loading
+# on Win98. Since we do not support Win98 any more, we specify nowin98
+# as recommended for NT and later. However, this is only required by
+# IX86 on older compilers and only needed if we are not doing a static build.
+
+!if "$(MACHINE)" == "IX86" && !$(STATIC_BUILD)
+!if [nmakehlp -l -opt:nowin98 $(LINKER_TESTFLAGS)]
+# Align sections for PE size savings.
+lflags = $(lflags) -opt:nowin98
+!endif
+!endif
+
dlllflags = $(lflags) -dll
conlflags = $(lflags) -subsystem:console
guilflags = $(lflags) -subsystem:windows
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index 7699f7d..292bb43 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -3045,7 +3045,7 @@ TclNativeCreateNativeRep(
WCHAR *nativePathPtr = NULL;
const char *str;
Tcl_Obj *validPathPtr;
- int len;
+ size_t len;
WCHAR *wp;
if (TclFSCwdIsNative()) {
@@ -3082,9 +3082,10 @@ TclNativeCreateNativeRep(
Tcl_IncrRefCount(validPathPtr);
}
- str = Tcl_GetStringFromObj(validPathPtr, &len);
+ str = Tcl_GetString(validPathPtr);
+ len = validPathPtr->length;
- if (strlen(str) != (size_t) len) {
+ if (strlen(str) != len) {
/*
* String contains NUL-bytes. This is invalid.
*/