From b582709d38680d33f74c74f83fbabbb2f4d49232 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Mon, 14 Jan 2019 02:20:53 +0100 Subject: [PATCH] dthread_send_delta bin exact (#563) --- Source/dthread.cpp | 34 ++++++++++++++++++---------------- Source/msg.cpp | 2 +- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/Source/dthread.cpp b/Source/dthread.cpp index e2da38c00..d2c790683 100644 --- a/Source/dthread.cpp +++ b/Source/dthread.cpp @@ -57,24 +57,26 @@ void __fastcall dthread_send_delta(int pnum, char cmd, void *pbSrc, int dwLen) { TMegaPkt *pkt; TMegaPkt *p; - TMegaPkt **last; - if (gbMaxPlayers != 1) { - 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); - last = &sgpInfoHead; - for (p = sgpInfoHead; p != NULL; p = p->pNext) { - last = &p->pNext; - } - *last = pkt; - SetEvent(sghWorkToDoEvent); - LeaveCriticalSection(&sgMemCrit); + if (gbMaxPlayers == 1) { + return; } + + pkt = (TMegaPkt *)DiabloAllocPtr(dwLen + 20); + pkt->pNext = NULL; + pkt->dwSpaceLeft = pnum; + pkt->data[0] = cmd; + *(_DWORD *)&pkt->data[4] = dwLen; + memcpy(&pkt->data[8], pbSrc, dwLen); + EnterCriticalSection(&sgMemCrit); + p = (TMegaPkt *)&sgpInfoHead; + while (p->pNext) { + p = p->pNext; + } + p->pNext = pkt; + + SetEvent(sghWorkToDoEvent); + LeaveCriticalSection(&sgMemCrit); } // 679660: using guessed type char gbMaxPlayers; diff --git a/Source/msg.cpp b/Source/msg.cpp index bcb132f83..837e42139 100644 --- a/Source/msg.cpp +++ b/Source/msg.cpp @@ -55,7 +55,7 @@ TMegaPkt *__cdecl msg_get_next_packet() TMegaPkt *result; sgpCurrPkt = (TMegaPkt *)DiabloAllocPtr(32008); - sgpCurrPkt->pNext = 0; + sgpCurrPkt->pNext = NULL; sgpCurrPkt->dwSpaceLeft = 32000; result = (TMegaPkt *)&sgpMegaPkt;