Attachment "tcl8.5.8-mingw64-fix.diff" to
ticket [3059922fff]
added by
mescalinum
2010-09-06 01:29:03.
diff -urpN tcl8.5.8/win/tclWin32Dll.c tcl8.5.8-mingw64-fix/win/tclWin32Dll.c
--- tcl8.5.8/win/tclWin32Dll.c 2009-07-01 16:05:19 +0200
+++ tcl8.5.8-mingw64-fix/win/tclWin32Dll.c 2010-09-05 19:44:10 +0200
@@ -319,7 +319,9 @@ DllMain(
* an exception handler and the state of the stack might be unstable.
*/
-#ifdef HAVE_NO_SEH
+#if defined(_WIN64) && defined(HAVE_NO_SEH)
+ Tcl_Finalize();
+#elif !defined(HAVE_NO_SEH)
__asm__ __volatile__ (
/*
diff -urpN tcl8.5.8/win/tclWinChan.c tcl8.5.8-mingw64-fix/win/tclWinChan.c
--- tcl8.5.8/win/tclWinChan.c 2008-05-23 23:10:45 +0200
+++ tcl8.5.8-mingw64-fix/win/tclWinChan.c 2010-09-05 19:33:01 +0200
@@ -1094,7 +1094,10 @@ Tcl_MakeFileChannel(
*/
result = 0;
-#ifndef HAVE_NO_SEH
+#if defined(_WIN64) && defined(HAVE_NO_SEH)
+ CloseHandle(dupedHandle);
+ result = 1;
+#elif !defined(HAVE_NO_SEH)
__try {
CloseHandle(dupedHandle);
result = 1;
diff -urpN tcl8.5.8/win/tclWinFCmd.c tcl8.5.8-mingw64-fix/win/tclWinFCmd.c
--- tcl8.5.8/win/tclWinFCmd.c 2006-08-29 02:36:57 +0200
+++ tcl8.5.8-mingw64-fix/win/tclWinFCmd.c 2010-09-05 19:34:51 +0200
@@ -199,7 +199,11 @@ DoRenameFile(
* arguments is a char block device.
*/
-#ifndef HAVE_NO_SEH
+#if defined(_WIN64) && defined(HAVE_NO_SEH)
+ if ((*tclWinProcs->moveFileProc)(nativeSrc, nativeDst) != FALSE) {
+ retval = TCL_OK;
+ }
+#elif !defined(HAVE_NO_SEH)
__try {
if ((*tclWinProcs->moveFileProc)(nativeSrc, nativeDst) != FALSE) {
retval = TCL_OK;
@@ -587,7 +591,11 @@ DoCopyFile(
* arguments is a char block device.
*/
-#ifndef HAVE_NO_SEH
+#if defined(_WIN64) && defined(HAVE_NO_SEH)
+ if ((*tclWinProcs->copyFileProc)(nativeSrc, nativeDst, 0) != FALSE) {
+ retval = TCL_OK;
+ }
+#elif !defined(HAVE_NO_SEH)
__try {
if ((*tclWinProcs->copyFileProc)(nativeSrc, nativeDst, 0) != FALSE) {
retval = TCL_OK;