@@ -4617,7 +4617,9 @@ static unsigned __stdcall XgSolveProcSmart(void *param)
4617
4617
void __fastcall XgStartSolve_AddBlack (void )
4618
4618
{
4619
4619
// フラグを初期化する。
4620
+ ::EnterCriticalSection (&xg_csLock);
4620
4621
xg_bSolved = xg_bCancelled = false ;
4622
+ ::LeaveCriticalSection (&xg_csLock);
4621
4623
4622
4624
if (xg_bSolvingEmpty)
4623
4625
xg_xword.clear ();
@@ -4653,7 +4655,9 @@ void __fastcall XgStartSolve_AddBlack(void)
4653
4655
void __fastcall XgStartSolve_NoAddBlack (void ) noexcept
4654
4656
{
4655
4657
// フラグを初期化する。
4658
+ ::EnterCriticalSection (&xg_csLock);
4656
4659
xg_bSolved = xg_bCancelled = false ;
4660
+ ::LeaveCriticalSection (&xg_csLock);
4657
4661
4658
4662
#ifdef SINGLE_THREAD_MODE
4659
4663
XgSolveProc_NoAddBlack (&xg_aThreadInfo[0 ]);
@@ -4673,7 +4677,9 @@ void __fastcall XgStartSolve_NoAddBlack(void) noexcept
4673
4677
void __fastcall XgStartSolve_Smart (void ) noexcept
4674
4678
{
4675
4679
// フラグを初期化する。
4680
+ ::EnterCriticalSection (&xg_csLock);
4676
4681
xg_bSolved = xg_bCancelled = false ;
4682
+ ::LeaveCriticalSection (&xg_csLock);
4677
4683
4678
4684
// まだブロック生成していない。
4679
4685
xg_bBlacksGenerated = FALSE ;
@@ -7859,8 +7865,10 @@ static unsigned __stdcall XgGenerateBlacksLineSymH(void *param)
7859
7865
7860
7866
void __fastcall XgStartGenerateBlacks (void ) noexcept
7861
7867
{
7868
+ ::EnterCriticalSection (&xg_csLock);
7862
7869
xg_bBlacksGenerated = false ;
7863
7870
xg_bCancelled = false ;
7871
+ ::LeaveCriticalSection (&xg_csLock);
7864
7872
7865
7873
// 最大長を制限する。
7866
7874
if (xg_nMaxWordLen > xg_nDictMaxWordLen) {
0 commit comments