void burn_drive_release(struct burn_drive *d, int le) { if (d->released) burn_print(1, "second release on drive!\n"); assert(!d->busy); d->unlock(d); if (le) d->eject(d); d->release(d); d->status = BURN_DISC_UNREADY; d->released = 1; if (d->toc_entry) free(d->toc_entry); d->toc_entry = NULL; d->toc_entries = 0; if (d->disc != NULL) { burn_disc_free(d->disc); d->disc = NULL; } }