From 988622c3b6799bef939c686954a31988e37bccc0 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 7 Oct 2006 17:51:07 +0000 Subject: [PATCH] Got rid of assert() in spc.c by soft means --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/async.c | 9 +++++++++ libburn/libdax_msgs.h | 2 ++ libburn/spc.c | 19 ++++++++++++++----- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index b496716..506cc90 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2006.10.07.170913" +#define Cdrskin_timestamP "2006.10.07.175427" diff --git a/libburn/async.c b/libburn/async.c index e54a1dc..fe40c5a 100644 --- a/libburn/async.c +++ b/libburn/async.c @@ -250,6 +250,15 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc) 0, 0); return; } + /* ts A61007 : obsolete Assert in spc_select_write_params() */ + if (!opts->drive->mdata->valid) { + libdax_msgs_submit(libdax_messenger, + opts->drive->global_index, 0x00020113, + LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, + "Drive capabilities not inquired yet", 0, 0); + return; + } + o.drive = opts->drive; o.opts = opts; o.disc = disc; diff --git a/libburn/libdax_msgs.h b/libburn/libdax_msgs.h index b5b5b35..6349092 100644 --- a/libburn/libdax_msgs.h +++ b/libburn/libdax_msgs.h @@ -318,6 +318,8 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff 0x00020110 (FATAL,HIGH) = Persistent drive address too long 0x00020111 (FATAL,HIGH) = Could not allocate new auxiliary object 0x00020112 (SORRY,HIGH) = Bad combination of write_type and block_type + 0x00020113 (FATAL,HIGH) = Drive capabilities not inquired yet + ------------------------------------------------------------------------------ diff --git a/libburn/spc.c b/libburn/spc.c index 4396002..c44fc81 100644 --- a/libburn/spc.c +++ b/libburn/spc.c @@ -202,7 +202,10 @@ void spc_select_error_params(struct burn_drive *d, c.page = &buf; c.page->bytes = 0; c.page->sectors = 0; - assert(d->mdata->valid); + + /* ts A61007 : moved up to only caller burn_disc_read() */ + /* a ssert(d->mdata->valid); */ + memset(c.page->data, 0, 8 + 2 + d->mdata->retry_page_length); c.page->bytes = 8 + 2 + d->mdata->retry_page_length; c.page->data[8] = 1; @@ -227,8 +230,9 @@ void spc_sense_write_params(struct burn_drive *d) unsigned char *page; struct command c; - assert(d->mdata->cdr_write || d->mdata->cdrw_write || - d->mdata->dvdr_write || d->mdata->dvdram_write); + /* ts A61007 : Done in soft at only caller burn_drive_grab() */ + /* a ssert(d->mdata->cdr_write || d->mdata->cdrw_write || + d->mdata->dvdr_write || d->mdata->dvdram_write); */ memcpy(c.opcode, SPC_MODE_SENSE, sizeof(SPC_MODE_SENSE)); c.retry = 1; @@ -256,7 +260,9 @@ void spc_select_write_params(struct burn_drive *d, struct command c; int bufe, sim; - assert(o->drive == d); + /* ts A61007 : All current callers are safe. */ + /* a ssert(o->drive == d); */ + memcpy(c.opcode, SPC_MODE_SELECT, sizeof(SPC_MODE_SELECT)); c.retry = 1; c.oplen = sizeof(SPC_MODE_SELECT); @@ -264,7 +270,10 @@ void spc_select_write_params(struct burn_drive *d, c.page = &buf; c.page->bytes = 0; c.page->sectors = 0; - assert(d->mdata->valid); + + /* ts A61007 : moved up to burn_disc_write() */ + /* a ssert(d->mdata->valid); */ + memset(c.page->data, 0, 8 + 2 + d->mdata->write_page_length); c.page->bytes = 8 + 2 + d->mdata->write_page_length; c.page->data[8] = 5;