Version: 1.90 (using KDE Devel) Installed from: Compiled sources OS: Linux It looks kinda related to wish (bug) number: 56258. Here the feature is described: clicking control to select multiple playlists. When I do that, bang boom crash. No more juk. Too bad, since it really is a nice application. I'm using debian snapshot (cvs >= 20030606) binaries from: http://oberlin.cems.umn.edu/kdecvs/debian (I guess they are pretty well known). Might be the binaries, since I know they do patch some things. My juk version is 1.90 (2.0 pre-alpha). I have experienced some other crashes as well, but none are really reproducable (this one is). They give the application a pretty buggy feeling. For a pre-alpha, I expect nothing else, but I wanted to note it anyway. Thanks for taking time, reading this and making the software. Jord
Subject: Re: New: juk crashes on multiple playlist select Yes, I know about this. This has only been happening for a few days (maybe a week or so). I'm even pretty sure where the bug is, but just didn't get a chance to commit a fix yet.
Oh, and I forgot to mention, stable JuK packages do exist (well, as do stable KDE packages) -- you're using the one that's Guaranteed Buggy (tm) (for this is the nature of things in CVS).
Subject: Re: juk crashes on multiple playlist select > Yes, I know about this. This has only been happening for a few days > (maybe a > week or so). I'm even pretty sure where the bug is, but just didn't get a > > chance to commit a fix yet. Wow, you must hold the record for quick responses ;-) Love juk by the way, anything I can do to help out? I is not a c++ engineer, but guess I could make my way into one... if the code is not too hard that is. Jord
Subject: Re: juk crashes on multiple playlist select > ------- You are receiving this mail because: ------- > You reported the bug, or are watching the reporter. > > http://bugs.kde.org/show_bug.cgi?id=59652 > wheeler@kde.org changed: > > What |Removed |Added > ---------------------------------------------------------------------------- > Status|UNCONFIRMED |ASSIGNED > everconfirmed|0 |1 > > > > ------- Additional Comments From wheeler@kde.org 2003-06-11 15:26 ------- > Oh, and I forgot to mention, stable JuK packages do exist (well, as do > stable KDE packages) > -- you're using the one that's Guaranteed Buggy (tm) (for this is the > nature of things in CVS). > I know and love it. Kate is broken too at the moment, don't love that, but well... Thought is was a good idea to file bugs anyway. Thought it would help out making software stable on different platforms. Jord
Subject: kdemultimedia/juk CVS commit by wheeler: Don't crash on multiple selection. Since this code is also a littly hairy, I added some big explanatory notes as to what's going on. CCMAIL:59652-done@bugs.kde.org M +28 -3 playlistsplitter.cpp 1.97 --- kdemultimedia/juk/playlistsplitter.cpp #1.96:1.97 @@ -667,7 +667,24 @@ void PlaylistSplitter::slotChangePlaylis } - Playlist *current = m_dynamicList; + // Save the current dynamic list so that we can delete it when we're done + // showing the next list. The two situations are that we're either showing + // an existing, non-dynamic list or that we're creating a dynamic list; in + // both cases we want to get rid of the current one. + // + // If in fact the currently visible list *is not* a dynamic list, then + // m_dyanmicList will simply be zero, making deleting it at the end of this + // method just a no-op. + // + // And finally, because we will end up doing a recursive call to this method + // to show the dynamic playlist (second case calls the first case), we want + // to make sure that in that case we don't delete the very thing we're + // being asked to show. (Hence the conditional assignment.) + + Playlist *current = l.first() != m_dynamicList ? m_dynamicList : 0; m_nextPlaylistItem = 0; + + // First case: We're just showing one, currently existing list. + if(l.count() == 1) { m_playlistStack->raiseWidget(l.first()); @@ -680,10 +697,18 @@ void PlaylistSplitter::slotChangePlaylis } } + + // Second case: There are multiple playlists in our list, so we need to create + // a new "dynamic list" that is the union of these playlists. + else { m_dynamicList = new DynamicPlaylist(l, m_playlistStack, i18n("Dynamic List")); + + // Note that this call will end up making a recursive call to this + // method, but in that call since there will only be one list, it will + // take the "first case" above. + setupPlaylist(m_dynamicList, true, 0); } - if(current) delete current;