mirror of
https://github.com/VARCem/MiniVHD.git
synced 2026-09-25 00:05:12 +00:00
Forgot endian conversion for BAT entries
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "bswap.h"
|
||||
#include "minivhd_internal.h"
|
||||
#include "minivhd_util.h"
|
||||
|
||||
@@ -56,8 +57,9 @@ static void mvhd_write_sect_bitmap(MVHDMeta* vhdm, int blk) {
|
||||
|
||||
static void mvhd_write_bat_entry(MVHDMeta* vhdm, int blk) {
|
||||
uint64_t table_offset = vhdm->sparse.bat_offset + (blk * sizeof vhdm->block[blk].offset);
|
||||
uint32_t offset = cpu_to_be32(vhdm->block[blk].offset);
|
||||
fseeko64(vhdm->f, table_offset, SEEK_SET);
|
||||
fwrite(&vhdm->block[blk].offset, sizeof vhdm->block[blk].offset, 1, vhdm->f);
|
||||
fwrite(&offset, sizeof offset, 1, vhdm->f);
|
||||
}
|
||||
|
||||
static void mvhd_create_block(MVHDMeta* vhdm, int blk) {
|
||||
|
||||
@@ -73,6 +73,7 @@ static MVHDBlock* mvhd_read_bat(MVHDMeta *vhdm, MVHDError* err) {
|
||||
fseeko64(vhdm->f, vhdm->sparse.bat_offset, SEEK_SET);
|
||||
for (uint32_t i = 0; i < vhdm->sparse.max_bat_ent; i++) {
|
||||
fread(&vhdm->block[i].offset, sizeof vhdm->block[i].offset, 1, vhdm->f);
|
||||
vhdm->block[i].offset = be32_to_cpu(vhdm->block[i].offset);
|
||||
vhdm->block[i].bitmap = NULL;
|
||||
vhdm->block[i].bitmap_cached = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user