summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2012-05-07 07:50:59 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2012-05-07 07:50:59 (GMT)
commita31a6d94b9e9430c76fdc460fae32a9f1290d733 (patch)
tree6cd429bd54e1d03fe0b0f9b9828726b5846c49ab
parente40e34cb04d940b132e66ccd21b3018a68ffe3f7 (diff)
downloadtcl-a31a6d94b9e9430c76fdc460fae32a9f1290d733.zip
tcl-a31a6d94b9e9430c76fdc460fae32a9f1290d733.tar.gz
tcl-a31a6d94b9e9430c76fdc460fae32a9f1290d733.tar.bz2
proposal from jmphilippe
-rw-r--r--win/tclWinDde.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/win/tclWinDde.c b/win/tclWinDde.c
index 1fa922b..aa51689 100644
--- a/win/tclWinDde.c
+++ b/win/tclWinDde.c
@@ -550,7 +550,7 @@ DdeServerProc (
}
if (convPtr != NULL) {
- BYTE *returnString;
+ char *returnString;
len = DdeQueryString(ddeInstance, ddeItem, NULL, 0,
CP_WINANSI);
@@ -561,19 +561,25 @@ DdeServerProc (
(DWORD) len + 1, CP_WINANSI);
if (stricmp(utilString, "$TCLEVAL$EXECUTE$RESULT") == 0) {
returnString =
- (BYTE *)Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len);
+ Tcl_GetStringFromObj(convPtr->returnPackagePtr, &len);
+ Tcl_DStringInit (&dString);
+ returnString =
+ Tcl_UtfToExternalDString (NULL, returnString, -1, &dString);
ddeReturn = DdeCreateDataHandle(ddeInstance,
- returnString, (DWORD) len+1, 0, ddeItem, CF_TEXT,
+ (BYTE *)returnString, (DWORD) len+1, 0, ddeItem, CF_TEXT,
0);
} else {
Tcl_Obj *variableObjPtr = Tcl_GetVar2Ex(
convPtr->riPtr->interp, utilString, NULL,
TCL_GLOBAL_ONLY);
if (variableObjPtr != NULL) {
- returnString = (BYTE *)Tcl_GetStringFromObj(variableObjPtr,
+ returnString = Tcl_GetStringFromObj(variableObjPtr,
&len);
+ Tcl_DStringInit (&dString);
+ returnString =
+ Tcl_UtfToExternalDString (NULL, returnString, -1, &dString);
ddeReturn = DdeCreateDataHandle(ddeInstance,
- returnString, (DWORD) len+1, 0, ddeItem,
+ (BYTE *)returnString, (DWORD) len+1, 0, ddeItem,
CF_TEXT, 0);
} else {
ddeReturn = NULL;