• R/O
  • SSH
  • HTTPS

ttssh2: コミット


コミットメタ情報

リビジョン7959 (tree)
日時2019-08-15 21:15:12
作者yutakapon

ログメッセージ

Windows Meでは InitializeCriticalSectionAndSpinCount APIがサポートされているが、
関数がエラー(0)を返し、かつGetLastError()が0になるという現象が発生する。そのため、
当該APIを使わないようにする。
チケット #36876

変更サマリ

差分

--- branches/openssl_1_1_1_v2/libs/openssl_patch/atomic_api.txt (nonexistent)
+++ branches/openssl_1_1_1_v2/libs/openssl_patch/atomic_api.txt (revision 7959)
@@ -0,0 +1,46 @@
1+*** openssl-1.1.1c.org/crypto/threads_win.c 2019-05-28 22:12:20.000000000 +0900
2+--- openssl/crypto/threads_win.c 2019-08-15 20:07:00.636008200 +0900
3+***************
4+*** 13,18 ****
5+--- 13,53 ----
6+
7+ #include <openssl/crypto.h>
8+
9++ #define InitializeCriticalSectionAndSpinCount(a, b) myInitializeCriticalSectionAndSpinCount(a)
10++ int myInitializeCriticalSectionAndSpinCount(void *arg)
11++ {
12++ InitializeCriticalSection(arg);
13++ return 1;
14++ }
15++
16++ #if 0
17++ #define InterlockedCompareExchange(a, b, c) myInterlockedCompareExchange(a, b, c)
18++ LONG myInterlockedCompareExchange(
19++ LPLONG volatile Destination,
20++ LONG Exchange,
21++ LONG Comperand
22++ )
23++ {
24++ LONG ret = *Destination;
25++ OutputDebugPrintf("%s: %x\n", __FUNCTION__, ret);
26++
27++ if (*Destination == Comperand)
28++ ret = InterlockedExchange(Destination, Exchange);
29++ return (ret);
30++ }
31++
32++ #define InterlockedExchangeAdd(a, b) myInterlockedExchangeAdd(a, b)
33++ LONG myInterlockedExchangeAdd(
34++ LONG volatile *Addend,
35++ LONG Value
36++ )
37++ {
38++ OutputDebugPrintf("%s: %x\n", __FUNCTION__, Value);
39++ while (Value-- > 0)
40++ InterlockedIncrement(Addend);
41++ }
42++ #endif
43++
44+ #if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) && defined(OPENSSL_SYS_WINDOWS)
45+
46+ CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void)
--- branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat (revision 7958)
+++ branches/openssl_1_1_1_v2/libs/openssl_patch/check_patch.bat (revision 7959)
@@ -54,11 +54,21 @@
5454 popd
5555
5656
57-
57+rem WindowsMeでInitializeCriticalSectionAndSpinCountがエラーとなる現象回避のため。
5858 :patch6
59+findstr /c:"myInitializeCriticalSectionAndSpinCount" ..\openssl\crypto\threads_win.c
60+if ERRORLEVEL 1 goto fail6
61+goto patch7
62+:fail6
63+pushd ..
64+%folder%\patch %cmdopt1% < %folder%\atomic_api.txt
65+%folder%\patch %cmdopt2% < %folder%\atomic_api.txt
66+popd
5967
6068
69+:patch7
6170
71+
6272 :patch_end
6373 echo "パッチは適用されています"
6474 timeout 5
旧リポジトリブラウザで表示