diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index a29f2a25..e3e07786 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -686,6 +686,21 @@ int isoburn_disc_erasable(struct burn_drive *d) } +static int isoburn_is_overwritable(struct burn_drive *drive, int flag) +{ + char name[80]; + int profile, ret; + + ret= burn_disc_get_profile(drive, &profile, name); + if(ret <= 0) + return(0); + if(profile == 0x12 || profile == 0x13 || profile == 0x1a || profile == 0x43) + return(1); + return(0); + +} + + void isoburn_disc_erase(struct burn_drive *drive, int fast) { int ret, do_pseudo_blank= 0, role; @@ -719,7 +734,9 @@ void isoburn_disc_erase(struct burn_drive *drive, int fast) } if(o->emulation_mode > 0) { /* might be readonly with emulated sessions */ ret= burn_disc_get_multi_caps(drive, BURN_WRITE_NONE, &caps, 0); - if(ret > 0 && caps->start_adr) + if(ret <= 0) /* Maybe because of burn_disc_pretend_full() */ + do_pseudo_blank= isoburn_is_overwritable(drive, 0); /* known profiles */ + else if(caps->start_adr) do_pseudo_blank= 1; } if(do_pseudo_blank) { diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 7ca34506..a9b160ff 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2014.05.03.114930" +#define Xorriso_timestamP "2014.05.03.115011"