OSDN Git Service

Remove limits for multi CPUs.
authors_kawamoto <s_kawamoto@users.sourceforge.jp>
Wed, 23 Nov 2011 14:12:31 +0000 (23:12 +0900)
committers_kawamoto <s_kawamoto@users.sourceforge.jp>
Wed, 23 Nov 2011 14:12:31 +0000 (23:12 +0900)
FFFTP_Eng_Release/FFFTP.exe
Release/FFFTP.exe
common.h
config.h
main.c
putty/Release/PuTTY.dll

index 7e5ccd2..0590b8c 100644 (file)
Binary files a/FFFTP_Eng_Release/FFFTP.exe and b/FFFTP_Eng_Release/FFFTP.exe differ
index 11d109b..0d96dca 100644 (file)
Binary files a/Release/FFFTP.exe and b/Release/FFFTP.exe differ
index 5898a2f..a69c5d1 100644 (file)
--- a/common.h
+++ b/common.h
@@ -1266,6 +1266,8 @@ int AskAutoExit(void);
 BOOL __stdcall SSLTimeoutCallback(BOOL* pbAborted);\r
 BOOL __stdcall SSLConfirmCallback(BOOL* pbAborted, BOOL bVerified, LPCSTR Certificate, LPCSTR CommonName);\r
 BOOL LoadSSLRootCAFile();\r
+// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
+BOOL IsMainThread();\r
 \r
 /*===== filelist.c =====*/\r
 \r
index 4ac18ff..8a9a593 100644 (file)
--- a/config.h
+++ b/config.h
@@ -10,7 +10,7 @@
 // プロセスをDLL Injectionから保護する\r
 #include "protectprocess.h"\r
 // 使用するCPUを1個に限定する(マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策)\r
-#define DISABLE_MULTI_CPUS\r
+//#define DISABLE_MULTI_CPUS\r
 // ファイル転送用のネットワークバッファを無効にする(通信中止後にリモートのディレクトリが表示されないバグ対策)\r
 //#define DISABLE_TRANSFER_NETWORK_BUFFERS\r
 // コントロール用のネットワークバッファを無効にする(フリーズ対策)\r
diff --git a/main.c b/main.c
index 49fdeb0..e14bf0e 100644 (file)
--- a/main.c
+++ b/main.c
@@ -132,6 +132,8 @@ static DWORD dwCookie;
 \r
 // 暗号化通信対応\r
 static char SSLRootCAFilePath[FMAX_PATH+1];\r
+// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
+static DWORD MainThreadId;\r
 \r
 \r
 /*===== グローバルなワーク =====*/\r
@@ -313,9 +315,11 @@ int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLi
                InitializeLoadLibraryHook();\r
 #endif\r
 \r
+       // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
 #ifdef DISABLE_MULTI_CPUS\r
        SetProcessAffinityMask(GetCurrentProcess(), 1);\r
 #endif\r
+       MainThreadId = GetCurrentThreadId();\r
 \r
        // yutaka\r
        if(OleInitialize(NULL) != S_OK){\r
@@ -2831,7 +2835,9 @@ int BackgrndMessageProc(void)
        Ret = NO;\r
        while(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))\r
        {\r
-               if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+               // マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
+//             if(!HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
+               if(!IsMainThread() || !HtmlHelp(NULL, NULL, HH_PRETRANSLATEMESSAGE, (DWORD)&Msg))\r
                {\r
                        /* ディレクトリ名の表示コンボボックスでBSやRETが効くように */\r
                        /* コンボボックス内ではアクセラレータを無効にする */\r
@@ -3027,3 +3033,10 @@ BOOL LoadSSLRootCAFile()
        return bResult;\r
 }\r
 \r
+// マルチコアCPUの特定環境下でファイル通信中にクラッシュするバグ対策\r
+BOOL IsMainThread()\r
+{\r
+       if(GetCurrentThreadId() != MainThreadId)\r
+               return FALSE;\r
+       return TRUE;\r
+}
\ No newline at end of file
index af44daf..ac10075 100644 (file)
Binary files a/putty/Release/PuTTY.dll and b/putty/Release/PuTTY.dll differ