[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/KDE/3.4/kdemultimedia
From: Will Stephenson <lists () stevello ! free-online ! co ! uk>
Date: 2005-08-19 13:03:52
Message-ID: 1124456632.767430.18767.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 450902 by wstephens:
Backport fix for double deletion segfault on cd change while showing
entry selection dialog.
M +6 -0 kaudiocreator/tracksimp.cpp
M +5 -2 libkcddb/client.cpp
--- branches/KDE/3.4/kdemultimedia/kaudiocreator/tracksimp.cpp #450901:450902
@@ -291,6 +291,7 @@
// TODO Why doesn't libcddb not return MultipleRecordFound?
//if( result == KCDDB::CDDB::MultipleRecordFound ) {
if( Prefs::promptIfIncompleteInfo() && cddb->lookupResponse().count() > 1 ) {
+ QString searchedCDId = cddbInfo.id;
CDInfoList cddb_info = cddb->lookupResponse();
CDInfoList::iterator it;
QStringList list;
@@ -326,6 +327,11 @@
return;
// user pressed Cancel
}
+ // Check that the CD we looked up is the one now loaded.
+ // The user might have ejected the CD while we were in the
+ // KInputDialog event loop, and replaced it with another one.
+ if ( searchedCDId != cddbInfo.id )
+ return;
}
// Some sanity provisions to ensure that the number of records matches what
--- branches/KDE/3.4/kdemultimedia/libkcddb/client.cpp #450901:450902
@@ -216,8 +216,11 @@
emit finished( r );
- cdInfoLookup->deleteLater();
- cdInfoLookup = 0L;
+ if ( cdInfoLookup ) // in case someone called lookup() while finished() was \
being processed, and deleted cdInfoLookup. + {
+ cdInfoLookup->deleteLater();
+ cdInfoLookup = 0L;
+ }
}
void
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic