From 4beea97f4704938f2d9ccffad1c7960d9e62ad61 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 2 Mar 2009 19:33:47 +0000 Subject: [PATCH] Fixed a race condition on abort with stdio writing which could cause SIGSEGV --- libburn/trunk/cdrskin/cdrskin_timestamp.h | 2 +- libburn/trunk/libburn/drive.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index 9553b00f..aefec21b 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2009.03.02.170126" +#define Cdrskin_timestamP "2009.03.02.193353" diff --git a/libburn/trunk/libburn/drive.c b/libburn/trunk/libburn/drive.c index afbfbe5b..ec4f5fc0 100644 --- a/libburn/trunk/libburn/drive.c +++ b/libburn/trunk/libburn/drive.c @@ -1757,10 +1757,18 @@ int burn_abort(int patience, occup = burn_drive_is_occupied(&(drive_array[i])); if(occup == -2) continue; + +#ifdef NIX + /* <<< this causes a race condition with drive usage + and drive disposal + */ if(drive_array[i].drive_role != 1) { drive_array[i].busy = BURN_DRIVE_IDLE; burn_drive_forget(&(drive_array[i]), 1); - } else if(occup <= 10) { + } else +#endif /* NIX */ + + if(occup <= 10) { burn_drive_forget(&(drive_array[i]), 1); } else if(occup <= 100) { if(first_round)