Merge pull request #4750 from 86Box/tc1995

Minor but important changes to minivhd's dynamic/diff vhd handling
This commit is contained in:
Miran Grča
2024-08-26 00:34:49 +02:00
committed by GitHub

View File

@@ -37,6 +37,7 @@
#ifndef _FILE_OFFSET_BITS
# define _FILE_OFFSET_BITS 64
#endif
#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
@@ -45,6 +46,10 @@
#include <time.h>
#include "minivhd.h"
#include "internal.h"
#define HAVE_STDARG_H
#include "cpu.h"
#include <86box/86box.h>
/*
* The following bit array macros adapted from:
@@ -334,6 +339,7 @@ mvhd_sparse_diff_write(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *i
int sib = 0;
ls = offset + transfer_sectors;
if (offset < total_sectors) {
for (s = offset; s < ls; s++) {
blk = s / vhdm->sect_per_block;
sib = s % vhdm->sect_per_block;
@@ -365,6 +371,7 @@ mvhd_sparse_diff_write(MVHDMeta *vhdm, uint32_t offset, int num_sectors, void *i
VHD_SETBIT(vhdm->bitmap.curr_bitmap, sib);
buff += MVHD_SECTOR_SIZE;
}
}
/* And write the sector bitmap for the last block we visited to disk */
write_curr_sect_bitmap(vhdm);