From f25dbb22dd66b138685a1b243798cde4c1d7dd7c Mon Sep 17 00:00:00 2001 From: Sjoerd van der Berg Date: Sun, 20 Oct 2002 01:17:07 +0000 Subject: [PATCH] Fixed error in blockread/write Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@378 --- src/hardware/memory.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/hardware/memory.cpp b/src/hardware/memory.cpp index cd0c9296..783cc6d3 100644 --- a/src/hardware/memory.cpp +++ b/src/hardware/memory.cpp @@ -40,14 +40,13 @@ void MEM_BlockRead(PhysPt off,void * data,Bitu size) { Bitu start=off & (PAGE_SIZE-1); Bitu tocopy=PAGE_SIZE-start; if (tocopy>size) tocopy=size; + size-=tocopy; if (ReadHostTable[page]) { memcpy(idata,ReadHostTable[page]+off,tocopy); - idata+=tocopy; - off+=tocopy; + idata+=tocopy;off+=tocopy; } else { for (;tocopy>0;tocopy--) *idata++=ReadHandlerTable[page](off++); } - size-=tocopy; } } @@ -58,14 +57,13 @@ void MEM_BlockWrite(PhysPt off,void * data,Bitu size) { Bitu start=off & (PAGE_SIZE-1); Bitu tocopy=PAGE_SIZE-start; if (tocopy>size) tocopy=size; + size-=tocopy; if (WriteHostTable[page]) { memcpy(WriteHostTable[page]+off,idata,tocopy); - idata+=tocopy; - off+=tocopy; + idata+=tocopy;off+=tocopy; } else { for (;tocopy>0;tocopy--) WriteHandlerTable[page](off++,*idata++); } - size-=tocopy; } }