--- cdparanoia-III-10.2.orig/interface/scsi_interface.c 2008-09-11 22:33:30.000000000 +0200 +++ cdparanoia-III-10.2.orig/interface/scsi_interface.c 2009-01-31 08:50:30.000000000 +0100 @@ -656,6 +656,7 @@ static int scsi_read_toc (cdrom_drive *d /* read the header first */ unsigned char sense[SG_MAX_SENSE]; + const unsigned char orig_cmd[10] = { 0x43, 0, 0, 0, 0, 0, 1, 0, 12, 0}; unsigned char cmd[10] = { 0x43, 0, 0, 0, 0, 0, 1, 0, 12, 0}; cmd[1]=d->lun<<5; @@ -674,7 +675,7 @@ static int scsi_read_toc (cdrom_drive *d } for (i = first; i <= last; i++){ - memcpy(cmd, (char []){ 0x43, 0, 0, 0, 0, 0, 0, 0, 12, 0}, 10); + memcpy(cmd, orig_cmd, 10); cmd[1]=d->lun<<5; cmd[6]=i; @@ -695,7 +696,7 @@ static int scsi_read_toc (cdrom_drive *d } } - memcpy(cmd, (char []){ 0x43, 0, 0, 0, 0, 0, 0, 0, 12, 0}, 10); + memcpy(cmd, orig_cmd, 10); cmd[1]=d->lun<<5; cmd[6]=0xAA; @@ -745,7 +746,8 @@ static int scsi_read_toc2 (cdrom_drive * } for (i = 0; i < tracks; i++){ - memcpy(cmd, (char[]){ 0xe5, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 10); + memset(cmd, 0, 10); + cmd[0]=0xe5; cmd[5]=i+1; cmd[8]=255;