diff --git a/xorriso/iso_img.c b/xorriso/iso_img.c index 8ba192b6..144f5c46 100644 --- a/xorriso/iso_img.c +++ b/xorriso/iso_img.c @@ -2054,7 +2054,8 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, } if(appended_as_gpt && !have_protective_msdos) { - if(mbr_count != 1) { + /* Check if really a pure GPT or a nearly pure mbr-force-bootable GPT */ + if(mbr_count != 1 && !(mbr_count == 2 && have_mbr_force_bootable)) { appended_as_gpt= 0; } else if(mbrpts[0].ptype != 0xee || mbrpts[0].start_block != 1) { appended_as_gpt= 0; @@ -2388,7 +2389,8 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, &et_idx, 0); } if(ret > 0) { - if(!(et_imgs[et_idx].do_gpt_basdat || + if(!(isohybrid || + et_imgs[et_idx].do_gpt_basdat || et_imgs[et_idx].do_gpt_hfsplus || part_like_isohybrid)) { if(mkisofs) @@ -2759,7 +2761,7 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, } if (et_imgs[idx].path[0] == 0 && efi_boot_part != 2) { for(i= 0; i < gpt_count; i++) { - if(have_protective_msdos && ( + if((have_protective_msdos || appended_as_gpt) && ( gpts[i].start_block == ((uint64_t) et_imgs[idx].lba) * 4 && (gpts[i].block_count == (uint64_t) et_imgs[idx].ldsiz || et_imgs[idx].ldsiz == 0 || et_imgs[idx].ldsiz == 1))) diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index f0b2df76..78988702 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2022.04.22.113132" +#define Xorriso_timestamP "2022.04.22.113324"