From 5e20febe5b1119c9f1bafa5a174dd83ed6b5f379 Mon Sep 17 00:00:00 2001 From: Fred Gleason Date: Tue, 10 Mar 2015 16:08:04 -0400 Subject: [PATCH] 2015-03-10 Fred Gleason * Fixed a bug in 'lib/rdcdplayer.cpp' that threw a segfault when opening the ripper with no CD inserted under RHEL 7. --- ChangeLog | 3 +++ lib/rdcdplayer.cpp | 17 ++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index e4bb9066..ab5eb0cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14834,3 +14834,6 @@ * Added a 'Capability::HaveMp4Decode' value to the 'RDStation::Capability' enumeration in 'lib/rdstation.cpp' and 'lib/rdstation.h'. +2015-03-10 Fred Gleason + * Fixed a bug in 'lib/rdcdplayer.cpp' that threw a segfault + when opening the ripper with no CD inserted under RHEL 7. diff --git a/lib/rdcdplayer.cpp b/lib/rdcdplayer.cpp index be97848c..9a7dc18b 100644 --- a/lib/rdcdplayer.cpp +++ b/lib/rdcdplayer.cpp @@ -201,13 +201,15 @@ int RDCdPlayer::rightVolume() void RDCdPlayer::setCddbRecord(RDCddbRecord *rec) { - rec->setTracks(cdrom_track_count); - rec->setDiscId(cdrom_disc_id); - rec->setDiscLength(75*(60*cdrom_track_start[cdrom_track_count].msf.minute+ - cdrom_track_start[cdrom_track_count].msf.second)+ - cdrom_track_start[cdrom_track_count].msf.frame); - for(int i=0;isetTrackOffset(i,trackOffset(i)); + if(cdrom_track_count>0) { + rec->setTracks(cdrom_track_count); + rec->setDiscId(cdrom_disc_id); + rec->setDiscLength(75*(60*cdrom_track_start[cdrom_track_count].msf.minute+ + cdrom_track_start[cdrom_track_count].msf.second)+ + cdrom_track_start[cdrom_track_count].msf.frame); + for(int i=0;isetTrackOffset(i,trackOffset(i)); + } } } @@ -460,6 +462,7 @@ void RDCdPlayer::ReadToc() // if(ioctl(cdrom_fd,CDROMREADTOCHDR,&tochdr)<0) { cdrom_track_count=0; + return; } cdrom_track_count=tochdr.cdth_trk1-tochdr.cdth_trk0+1;