summaryrefslogtreecommitdiffstats
path: root/win/tclWinReg.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2012-06-22 08:29:53 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2012-06-22 08:29:53 (GMT)
commit5680fa44dbfafeed01f328dd8cde4310c3c95ba6 (patch)
tree1b855b6b0ffa0d3e208cf79e38d1b38d47dab3c2 /win/tclWinReg.c
parent4731d0ccca76a01ad1401b71b70c9e6f1e372050 (diff)
parentb6f50b1321a5cd34af747eb670aad924fc66d7b7 (diff)
downloadtcl-bug_3508771.zip
tcl-bug_3508771.tar.gz
tcl-bug_3508771.tar.bz2
first working version of Cygwin notifierbug_3508771
Diffstat (limited to 'win/tclWinReg.c')
-rw-r--r--win/tclWinReg.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/win/tclWinReg.c b/win/tclWinReg.c
index 3960fda..701edfb 100644
--- a/win/tclWinReg.c
+++ b/win/tclWinReg.c
@@ -595,6 +595,8 @@ GetKeyNames(
}
if (result == TCL_OK) {
Tcl_SetObjResult(interp, resultPtr);
+ } else {
+ Tcl_DecrRefCount(resultPtr); /* BUGFIX: Don't leak on failure. */
}
ckfree(buffer);
@@ -729,8 +731,8 @@ GetValue(
*/
Tcl_DStringInit(&data);
- length = TCL_DSTRING_STATIC_SIZE - 1;
- Tcl_DStringSetLength(&data, (int) length);
+ Tcl_DStringSetLength(&data, TCL_DSTRING_STATIC_SIZE - 1);
+ length = TCL_DSTRING_STATIC_SIZE / (regWinProcs->useWide ? 2 : 1) - 1;
resultPtr = Tcl_GetObjResult(interp);
@@ -746,8 +748,8 @@ GetValue(
* Required for HKEY_PERFORMANCE_DATA
*/
length *= 2;
- Tcl_DStringSetLength(&data, (int) length);
- result = (*regWinProcs->regQueryValueExProc)(key, (char *) nativeValue,
+ Tcl_DStringSetLength(&data, (int) length * (regWinProcs->useWide ? 2 : 1));
+ result = (*regWinProcs->regQueryValueExProc)(key, (char *) nativeValue,
NULL, &type, (BYTE *) Tcl_DStringValue(&data), &length);
}
Tcl_DStringFree(&buf);