fread_targphys(): Do not cut off the tail.
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 9 Mar 2009 18:08:56 +0000 (18:08 +0000)
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 9 Mar 2009 18:08:56 +0000 (18:08 +0000)
loader.c:fread_targphys() read file by 4096 byte chunks and store them to
memory. But did not store the last chunk if its size was not 4096.

Signed-off-by: Takashi YOSHII <takasi-y@ops.dti.ne.jp>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6792 c046a42c-6fe2-441c-8c8c-71466251a162

loader.c

index 71b9ba7..55625cf 100644 (file)
--- a/loader.c
+++ b/loader.c
@@ -90,11 +90,12 @@ int fread_targphys(target_phys_addr_t dst_addr, size_t nbytes, FILE *f)
     while (nbytes) {
        want = nbytes > sizeof(buf) ? sizeof(buf) : nbytes;
        did = fread(buf, 1, want, f);
-       if (did != want) break;
 
        cpu_physical_memory_write_rom(dst_addr, buf, did);
        dst_addr += did;
        nbytes -= did;
+       if (did != want)
+           break;
     }
     return dst_addr - dst_begin;
 }