summaryrefslogtreecommitdiffstats
path: root/win
diff options
context:
space:
mode:
Diffstat (limited to 'win')
-rw-r--r--win/tclWinFile.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/win/tclWinFile.c b/win/tclWinFile.c
index a54077d..c7159b7 100644
--- a/win/tclWinFile.c
+++ b/win/tclWinFile.c
@@ -1476,24 +1476,22 @@ TclpGetUserHome(
*/
ptr = TclpGetUserName(&ds);
if (ptr != NULL && strcasecmp(name, ptr) == 0) {
- HANDLE hProcess;
- WCHAR buf[MAX_PATH];
- DWORD nChars = sizeof(buf) / sizeof(buf[0]);
- /* Sadly GetCurrentProcessToken not in Win 7 so slightly longer */
- hProcess = GetCurrentProcess(); /* Need not be closed */
- if (hProcess) {
- HANDLE hToken;
- if (OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) {
- if (GetUserProfileDirectoryW(hToken, buf, &nChars)) {
- Tcl_WinTCharToUtf((TCHAR *)buf,
- (nChars-1)*sizeof(WCHAR),
- bufferPtr);
- result = Tcl_DStringValue(bufferPtr);
- rc = 1;
- }
- CloseHandle(hToken);
- }
- }
+ HANDLE hProcess;
+ WCHAR buf[MAX_PATH];
+ DWORD nChars = sizeof(buf) / sizeof(buf[0]);
+ /* Sadly GetCurrentProcessToken not in Win 7 so slightly longer */
+ hProcess = GetCurrentProcess(); /* Need not be closed */
+ if (hProcess) {
+ HANDLE hToken;
+ if (OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) {
+ if (GetUserProfileDirectoryW(hToken, buf, &nChars)) {
+ Tcl_DStringInit(bufferPtr);
+ result = Tcl_WCharToUtfDString(buf, nChars-1, (bufferPtr));
+ rc = 1;
+ }
+ CloseHandle(hToken);
+ }
+ }
}
Tcl_DStringFree(&ds);
} else {