summaryrefslogtreecommitdiffstats
path: root/win/tclWinReg.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclWinReg.c')
-rw-r--r--win/tclWinReg.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/win/tclWinReg.c b/win/tclWinReg.c
index 1034392..59de335 100644
--- a/win/tclWinReg.c
+++ b/win/tclWinReg.c
@@ -1208,7 +1208,11 @@ RecursiveDeleteKey(
HKEY hKey;
REGSAM saveMode = mode;
static int checkExProc = 0;
- static LONG (* regDeleteKeyExProc) (HKEY, LPCWSTR, REGSAM, DWORD) = (LONG (*) (HKEY, LPCWSTR, REGSAM, DWORD)) NULL;
+ typedef LONG (* regDeleteKeyExProc) (HKEY, LPCWSTR, REGSAM, DWORD);
+ static regDeleteKeyExProc regDeleteKeyEx = (regDeleteKeyExProc) NULL;
+ /* Really RegDeleteKeyExW() but that's not
+ * available on all versions of Windows
+ * supported by Tcl. */
/*
* Do not allow NULL or empty key name.
@@ -1248,11 +1252,11 @@ RecursiveDeleteKey(
checkExProc = 1;
handle = GetModuleHandleW(L"ADVAPI32");
- regDeleteKeyExProc = (LONG (*) (HKEY, LPCWSTR, REGSAM, DWORD))
- (void *)GetProcAddress(handle, "RegDeleteKeyExW");
+ regDeleteKeyEx = (regDeleteKeyExProc) (void *)
+ GetProcAddress(handle, "RegDeleteKeyExW");
}
- if (mode && regDeleteKeyExProc) {
- result = regDeleteKeyExProc(startKey, keyName, mode, 0);
+ if (mode && regDeleteKeyEx) {
+ result = regDeleteKeyEx(startKey, keyName, mode, 0);
} else {
result = RegDeleteKeyW(startKey, keyName);
}