diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-06-22 08:29:53 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2012-06-22 08:29:53 (GMT) |
commit | 5680fa44dbfafeed01f328dd8cde4310c3c95ba6 (patch) | |
tree | 1b855b6b0ffa0d3e208cf79e38d1b38d47dab3c2 /win/tclWinReg.c | |
parent | 4731d0ccca76a01ad1401b71b70c9e6f1e372050 (diff) | |
parent | b6f50b1321a5cd34af747eb670aad924fc66d7b7 (diff) | |
download | tcl-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.c | 10 |
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); |