summaryrefslogtreecommitdiffstats
path: root/win/tclWinChan.c
diff options
context:
space:
mode:
Diffstat (limited to 'win/tclWinChan.c')
-rw-r--r--win/tclWinChan.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/win/tclWinChan.c b/win/tclWinChan.c
index 51c7632..767fa94 100644
--- a/win/tclWinChan.c
+++ b/win/tclWinChan.c
@@ -1033,12 +1033,7 @@ Tcl_MakeFileChannel(rawHandle, mode)
*/
result = 0;
-#ifndef HAVE_NO_SEH
- __try {
- CloseHandle(dupedHandle);
- result = 1;
- } __except (EXCEPTION_EXECUTE_HANDLER) {}
-#else
+#if defined(HAVE_NO_SEH) && !defined(_WIN64)
/*
* Don't have SEH available, do things the hard way.
* Note that this needs to be one block of asm, to avoid stack
@@ -1115,6 +1110,15 @@ Tcl_MakeFileChannel(rawHandle, mode)
);
result = registration.status;
+#else
+#ifndef HAVE_NO_SEH
+ __try {
+#endif
+ CloseHandle(dupedHandle);
+ result = 1;
+#ifndef HAVE_NO_SEH
+ } __except (EXCEPTION_EXECUTE_HANDLER) {}
+#endif
#endif
if (result == FALSE) {
return NULL;