summaryrefslogtreecommitdiffstats
path: root/win/tclWin32Dll.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2018-10-06 17:12:46 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2018-10-06 17:12:46 (GMT)
commitac711bcf45a5b5bd09e3102e5ea08f726237212f (patch)
treeaa1f8b68dd50c5e303d53ca13d43ef7639b4ea95 /win/tclWin32Dll.c
parentb5f75d3392ae32955aaef38e3d3af58119179a73 (diff)
downloadtcl-ac711bcf45a5b5bd09e3102e5ea08f726237212f.zip
tcl-ac711bcf45a5b5bd09e3102e5ea08f726237212f.tar.gz
tcl-ac711bcf45a5b5bd09e3102e5ea08f726237212f.tar.bz2
protect Tcl_WinUtfToTChar/Tcl_WinTCharToUtf against NULL input values: return empty string in that case.
Add TIP #494-compatible definitions of TCL_IO_FAILURE/TCL_AUTO_LENGTH, and use it in some appropriate places.
Diffstat (limited to 'win/tclWin32Dll.c')
-rw-r--r--win/tclWin32Dll.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/win/tclWin32Dll.c b/win/tclWin32Dll.c
index 1a33514..04d27dd 100644
--- a/win/tclWin32Dll.c
+++ b/win/tclWin32Dll.c
@@ -472,6 +472,9 @@ Tcl_WinUtfToTChar(
* converted string is stored. */
{
Tcl_DStringInit(dsPtr);
+ if (!string) {
+ return (TCHAR *)Tcl_DStringValue(dsPtr);
+ }
return Tcl_UtfToUniCharDString(string, len, dsPtr);
}
@@ -483,12 +486,15 @@ Tcl_WinTCharToUtf(
Tcl_DString *dsPtr) /* Uninitialized or free DString in which the
* converted string is stored. */
{
+ Tcl_DStringInit(dsPtr);
+ if (!string) {
+ return Tcl_DStringValue(dsPtr);
+ }
if (len > 0) {
len /= 2;
} else if (len < 0) {
len = wcslen(string);
}
- Tcl_DStringInit(dsPtr);
return Tcl_UniCharToUtfDString(string, len, dsPtr);
}