Merge pull request #2 from sards3/diff-v3

Fix bug in vhd_read_sectors().
This commit is contained in:
Sherman Perry
2018-12-28 23:34:29 +13:00
committed by GitHub

View File

@@ -235,6 +235,10 @@ VHDError vhd_read_file(FILE *f, VHDMeta *vhdm, const char *path)
{
/* Don't want a pointer to who knows where... */
vhdm->sparse_bat_arr = NULL;
vhdm->sparse_bitmap_arr = NULL;
vhdm->parent.f = NULL;
vhdm->parent.meta = NULL;
vhd_raw_foot_to_meta(vhdm);
if (vhdm->type == VHD_DYNAMIC || vhdm->type == VHD_DIFF)
{
@@ -289,6 +293,11 @@ void vhd_create_file(FILE *f, VHDMeta *vhdm, int cyl, int heads, int spt, VHDTyp
vhdm->sparse_bat_offset = VHD_FOOTER_SZ + VHD_SPARSE_HEAD_SZ;
vhdm->sparse_block_sz = VHD_DEF_BLOCK_SZ;
vhdm->sparse_max_bat = vhdm->curr_size / vhdm->sparse_block_sz;
vhdm->sparse_bat_arr = NULL;
vhdm->sparse_bitmap_arr = NULL;
vhdm->parent.f = NULL;
vhdm->parent.meta = NULL;
if (vhdm->curr_size % vhdm->sparse_block_sz != 0)
{
vhdm->sparse_max_bat += 1;
@@ -619,7 +628,7 @@ int vhd_read_sectors(VHDMeta *vhdm, FILE *f, int offset, int nr_sectors, void *b
{
uint64_t addr = (uint64_t)s * VHD_SECTOR_SZ;
fseeko64(curr_f, addr, SEEK_SET);
fread(buffer, VHD_SECTOR_SZ, 1, curr_f);
fread(buff_ptr, VHD_SECTOR_SZ, 1, curr_f);
}
else
{