From 2b696c4f22351da124b1ce7bc2e1e23612c261b8 Mon Sep 17 00:00:00 2001 From: Robin Eklind Date: Tue, 27 Nov 2018 00:54:50 +0100 Subject: [PATCH] dthread_send_delta almost bin exact uses eax instead of ecx in one instruction, but semantically equivalent. Updates #236. --- Source/dthread.cpp | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/Source/dthread.cpp b/Source/dthread.cpp index feca7b143..54eb240e0 100644 --- a/Source/dthread.cpp +++ b/Source/dthread.cpp @@ -62,29 +62,23 @@ void __fastcall dthread_remove_player(int pnum) void __fastcall dthread_send_delta(int pnum, char cmd, void *pbSrc, int dwLen) { - TMegaPkt *v5; // eax - TMegaPkt *v6; // esi - TMegaPkt *v7; // eax - TMegaPkt **v8; // ecx - int v9; // [esp+4h] [ebp-4h] + TMegaPkt *pkt; + TMegaPkt *p; + TMegaPkt **last; - v9 = pnum; if (gbMaxPlayers != 1) { - v5 = (TMegaPkt *)DiabloAllocPtr(dwLen + 20); - v6 = v5; - v5->pNext = 0; - v5->dwSpaceLeft = v9; - v5->data[0] = cmd; - *(_DWORD *)&v5->data[4] = dwLen; - memcpy(&v5->data[8], pbSrc, dwLen); + pkt = (TMegaPkt *)DiabloAllocPtr(dwLen + 20); + pkt->pNext = 0; + pkt->dwSpaceLeft = pnum; + pkt->data[0] = cmd; + *(_DWORD *)&pkt->data[4] = dwLen; + memcpy(&pkt->data[8], pbSrc, dwLen); EnterCriticalSection(&sgMemCrit); - v7 = sgpInfoHead; - v8 = &sgpInfoHead; - while (v7) { - v8 = &v7->pNext; - v7 = v7->pNext; + last = &sgpInfoHead; + for (p = sgpInfoHead; p != NULL; p = p->pNext) { + last = &p->pNext; } - *v8 = v6; + *last = pkt; SetEvent(sghWorkToDoEvent); LeaveCriticalSection(&sgMemCrit); }