mirror of
https://github.com/VARCem/MiniVHD.git
synced 2026-09-23 23:35:17 +00:00
Merge pull request #2 from sards3/diff-v3
Fix bug in vhd_read_sectors().
This commit is contained in:
11
minivhd.c
11
minivhd.c
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user