Bug fix: Interrupting libburn while drive tray is loading led to endless loop

This commit is contained in:
Thomas Schmitt 2011-12-02 10:02:25 +00:00
parent 2cd0eb94d7
commit cd95c451b6
3 changed files with 5 additions and 3 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2011.11.30.131608" #define Cdrskin_timestamP "2011.12.02.100148"

View File

@ -1341,7 +1341,7 @@ int burn_drive_forget(struct burn_drive *d, int force)
if(occup > 0) if(occup > 0)
if(force < 1) if(force < 1)
return 0; return 0;
if(occup >= 10) if(occup > 10)
return 0; return 0;
/* >>> do any drive calming here */; /* >>> do any drive calming here */;
@ -2317,7 +2317,7 @@ int burn_abort_5(int patience,
} }
if(occup < 10) { if(occup <= 10) {
if (drive_array[i].drive_role != 1) if (drive_array[i].drive_role != 1)
/* occup == -1 comes early */ /* occup == -1 comes early */
usleep(1000000); usleep(1000000);

View File

@ -210,6 +210,8 @@ handle_error:;
goto handle_error; goto handle_error;
slumber:; slumber:;
if (d->cancel)
break;
usleep(sleep_usecs); usleep(sleep_usecs);
} }
if (ret <= 0 || !(flag & 2)) { if (ret <= 0 || !(flag & 2)) {