diff options
author | dgp <dgp@users.sourceforge.net> | 2014-11-24 03:11:23 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2014-11-24 03:11:23 (GMT) |
commit | 9b9c29e352eb0ae7a048fa4ca8a021a4100d2b40 (patch) | |
tree | 0a031209db0e175aa2fa2752a9a14f7026ab18c5 /generic | |
parent | 6be2b2840d82bf04df03ba282a9012072b9edb2a (diff) | |
parent | 33eb2510ff53b7fd3b32ea1c84b4ef85d00c10f8 (diff) | |
download | tcl-9b9c29e352eb0ae7a048fa4ca8a021a4100d2b40.zip tcl-9b9c29e352eb0ae7a048fa4ca8a021a4100d2b40.tar.gz tcl-9b9c29e352eb0ae7a048fa4ca8a021a4100d2b40.tar.bz2 |
merge trunk
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclExecute.c | 6 | ||||
-rw-r--r-- | generic/tclIOSock.c | 23 |
2 files changed, 22 insertions, 7 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 2e03ab4..337a75f 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -81,9 +81,7 @@ int tclTraceExec = 0; static const char *const operatorStrings[] = { "||", "&&", "|", "^", "&", "==", "!=", "<", ">", "<=", ">=", "<<", ">>", - "+", "-", "*", "/", "%", "+", "-", "~", "!", - "BUILTIN FUNCTION", "FUNCTION", - "", "", "", "", "", "", "", "", "eq", "ne" + "+", "-", "*", "/", "%", "+", "-", "~", "!" }; /* @@ -9830,7 +9828,7 @@ IllegalExprOperandType( if (opcode == INST_EXPON) { operator = "**"; - } else if (opcode <= INST_STR_NEQ) { + } else if (opcode <= INST_LNOT) { operator = operatorStrings[opcode - INST_LOR]; } diff --git a/generic/tclIOSock.c b/generic/tclIOSock.c index 694501f..f69d30f 100644 --- a/generic/tclIOSock.c +++ b/generic/tclIOSock.c @@ -12,9 +12,26 @@ #include "tclInt.h" #if defined(_WIN32) && defined(UNICODE) -/* On Windows, we always need the ASCII version. */ -# undef gai_strerror -# define gai_strerror gai_strerrorA +/* On Windows, we need to do proper Unicode->UTF-8 conversion. */ + +typedef struct ThreadSpecificData { + int initialized; + Tcl_DString errorMsg; /* UTF-8 encoded error-message */ +} ThreadSpecificData; +static Tcl_ThreadDataKey dataKey; + +#undef gai_strerror +static const char *gai_strerror(int code) { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (tsdPtr->initialized) { + Tcl_DStringFree(&tsdPtr->errorMsg); + } else { + tsdPtr->initialized = 1; + } + Tcl_WinTCharToUtf(gai_strerrorW(code), -1, &tsdPtr->errorMsg); + return Tcl_DStringValue(&tsdPtr->errorMsg); +} #endif /* |