diff --git a/src/isofs_wrap.c b/src/isofs_wrap.c index e9363c75..cdd50d94 100644 --- a/src/isofs_wrap.c +++ b/src/isofs_wrap.c @@ -71,7 +71,8 @@ uint32_t iso_read_lsb(const uint8_t *buf, int bytes) /* API function. See libisoburn.h */ -int isoburn_read_volset(struct burn_drive *d, struct isoburn_read_opts *read_opts, +int isoburn_read_volset(struct burn_drive *d, + struct isoburn_read_opts *read_opts, struct iso_volset **volset) { int ret; @@ -79,7 +80,12 @@ int isoburn_read_volset(struct burn_drive *d, struct isoburn_read_opts *read_opt enum burn_disc_status status; struct isoburn *o; - assert(d && read_opts && volset); + if(d==NULL || read_opts==NULL || volset==NULL) { + + /* >>> program error */; + + return(-1); + } ret = isoburn_find_emulator(&o, d, 0); if (ret < 0) @@ -111,6 +117,7 @@ int isoburn_read_volset(struct burn_drive *d, struct isoburn_read_opts *read_opt return -1; o->target_volset = *volset; + iso_volset_ref(o->target_volset); /* protects object from premature free */ return 1; } diff --git a/test/xorriso.c b/test/xorriso.c index 2a07c38a..780ebdef 100644 --- a/test/xorriso.c +++ b/test/xorriso.c @@ -3409,7 +3409,7 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag) ret= Xorriso_give_up_drive(xorriso, flag&3); else ret= Xorriso_aquire_drive(xorriso, adr, flag&3); - if(ret<=0) + if(ret<0) return(ret); if(Sfile_str(xorriso->indev, adr, 0)<=0) return(-1); diff --git a/test/xorriso_timestamp.h b/test/xorriso_timestamp.h index 6dd918dc..f84a485b 100644 --- a/test/xorriso_timestamp.h +++ b/test/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2007.10.18.221756" +#define Xorriso_timestamP "2007.10.18.225654" diff --git a/test/xorrisoburn.c b/test/xorrisoburn.c index 21fbfb53..b39c718f 100644 --- a/test/xorrisoburn.c +++ b/test/xorrisoburn.c @@ -184,9 +184,9 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag) xorriso->in_volset_handle= volset; ret= 1; ex: - if(ret<=0) { + if(ret<0) { - /* >>> ??? give up not-so-suitable drive ? */; + /* >>> give up drive */; } Xorriso_process_msg_queues(xorriso,0); @@ -210,7 +210,8 @@ int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag) "on attempt to give drive up", 0); isoburn_drive_release(drive,0); - iso_volset_free((struct iso_volset *) xorriso->in_volset_handle); + if(xorriso->in_volset_handle!=NULL) + iso_volset_free((struct iso_volset *) xorriso->in_volset_handle); xorriso->in_volset_handle= NULL; xorriso->volset_change_pending= 0;