From 87b712450f77cf51a4eb349d6b3c71c2382b1311 Mon Sep 17 00:00:00 2001 From: ANR2ME Date: Fri, 24 Jul 2020 10:13:27 +0700 Subject: [PATCH] Locking before changing peer linked list order, just to be safe. --- Core/HLE/proAdhoc.cpp | 2 ++ Core/HLE/sceNetAdhoc.cpp | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/Core/HLE/proAdhoc.cpp b/Core/HLE/proAdhoc.cpp index e3c107be9d..c69b3aee45 100644 --- a/Core/HLE/proAdhoc.cpp +++ b/Core/HLE/proAdhoc.cpp @@ -478,9 +478,11 @@ void postAcceptAddSiblings(SceNetAdhocMatchingContext * context, int siblingcoun // Initialize Ping Timer sibling->lastping = CoreTiming::GetGlobalTimeUsScaled(); //real_time_now()*1000000.0; + peerlock.lock(); // Link Peer, should check whether it's already added before sibling->next = context->peerlist; context->peerlist = sibling; + peerlock.unlock(); // Spawn Established Event spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_ESTABLISHED, &sibling->mac, 0, NULL); diff --git a/Core/HLE/sceNetAdhoc.cpp b/Core/HLE/sceNetAdhoc.cpp index d61dc4cd79..10255d917e 100644 --- a/Core/HLE/sceNetAdhoc.cpp +++ b/Core/HLE/sceNetAdhoc.cpp @@ -4875,9 +4875,11 @@ void actOnHelloPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * se // Initialize Ping Timer peer->lastping = CoreTiming::GetGlobalTimeUsScaled(); //real_time_now()*1000000.0; + peerlock.lock(); // Link Peer into List peer->next = context->peerlist; context->peerlist = peer; + peerlock.unlock(); } } @@ -4950,9 +4952,11 @@ void actOnJoinPacket(SceNetAdhocMatchingContext * context, SceNetEtherAddr * sen // Initialize Ping Timer peer->lastping = CoreTiming::GetGlobalTimeUsScaled(); //real_time_now()*1000000.0; + peerlock.lock(); // Link Peer into List peer->next = context->peerlist; context->peerlist = peer; + peerlock.unlock(); // Spawn Request Event spawnLocalEvent(context, PSP_ADHOC_MATCHING_EVENT_REQUEST, sendermac, optlen, opt);