diff --git a/ChangeLog b/ChangeLog index 15697282..1c0c8bef 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24869,3 +24869,6 @@ * Removed extraneous debugging statements from 'lib/rdplay_deck.cpp'. 2024-08-25 Fred Gleason * Incremented the package version to 4.3.0int4. +2024-08-26 Fred Gleason + * Fixed a bug in rdairplay(1) that caused the voice tracker to be + left in an undefined state after attempting to load a locked log. diff --git a/lib/rdtrackerwidget.cpp b/lib/rdtrackerwidget.cpp index 4ba729bd..397f3da0 100644 --- a/lib/rdtrackerwidget.cpp +++ b/lib/rdtrackerwidget.cpp @@ -454,6 +454,20 @@ bool RDTrackerWidget::load(const QString &logname) QString stationname; QHostAddress addr; + // + // Attempt to get a log lock + // + d_log_lock=new RDLogLock(logname,rda->user(),rda->station(),this); + if(!d_log_lock->tryLock(&username,&stationname,&addr)) { + QMessageBox::warning(this,"RDLogEdit - "+tr("Log Locked"), + tr("Log already being edited by")+" "+ + username+"@"+stationname+" ["+ + addr.toString()+"]."); + delete d_log_lock; + d_log_lock=NULL; + return false; + } + // // Voicetrack Group // @@ -465,32 +479,6 @@ bool RDTrackerWidget::load(const QString &logname) d_log_model->setServiceName(d_log->service()); d_log_model->load(true); - // - // Log Data Structures - // - d_log_lock=new RDLogLock(d_log->name(),rda->user(),rda->station(),this); - if(!d_log_lock->tryLock(&username,&stationname,&addr)) { - QMessageBox::warning(this,"RDLogEdit - "+tr("Log Locked"), - tr("Log already being edited by")+" "+ - username+"@"+stationname+" ["+ - addr.toString()+"]."); - delete d_log_lock; - d_log_lock=NULL; - - delete d_group; - d_group=NULL; - - delete d_svc; - d_svc=NULL; - - delete d_log; - d_log=NULL; - - d_tracks=0; - - return false; - } - // // Select first track //