From 7f99a8e70ef82c14d274e8f9edcb0750f74420c4 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Thu, 21 Nov 2013 09:21:29 +0000 Subject: [PATCH] Better reaction on drive errors during burn_drive_scan_and_grab() --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/drive.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index da53033..81d375a 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2013.11.17.152544" +#define Cdrskin_timestamP "2013.11.21.092012" diff --git a/libburn/drive.c b/libburn/drive.c index 89da9f6..e116097 100644 --- a/libburn/drive.c +++ b/libburn/drive.c @@ -537,6 +537,10 @@ int burn_drive_grab(struct burn_drive *d, int le) {ret = 0; goto ex;} ex:; + if (d->cancel || burn_is_aborting(0)) { + d->unlock(d); + d->release(d); + } d->silent_on_scsi_error = sose; d->busy = BURN_DRIVE_IDLE; burn_grab_restore_sig_action(signal_action_mem, 0); @@ -1870,8 +1874,10 @@ int burn_drive_scan_and_grab(struct burn_drive_info *drive_infos[], char* adr, */ ret = burn_drive_grab(drive_infos[0]->drive, load); - if (ret != 1) + if (ret != 1) { + burn_drive_forget(drive_infos[0]->drive, 0); return -1; + } return 1; }