|
View:
New views
13 Messages
—
Rating Filter:
Alert me
|
|
|
[Bug 119230] New: memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 Summary: memleak in xine engine Product: amarok Version: 1.3.7 Platform: SuSE RPMs OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: NOR Component: general AssignedTo: amarok-bugs-dist lists sourceforge net ReportedBy: maacruz gmail com Version: 1.3.7 (using KDE KDE 3.5.0) Installed from: SuSE RPMs Compiler: gcc 4.0.2 OS: Linux Amarok with xine engine has a memleak when crossfade is enabled, and ends eating all available memory. How to reproduce: Open amarok, select xine engine, activate crossfade. Start playing, to accelerate things keep hitting "next", on every song change a bit of memory is claimed and never get's released. After enough time amarok is a really BIG process. |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From maacruz gmail com 2005-12-30 12:40 ------- Created an attachment (id=14079) --> (http://bugs.kde.org/attachment.cgi?id=14079&action=view) ksysguard screenshot |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From thiago kde org 2005-12-30 14:45 ------- I can confirm this. Running amarokapp inside valgrind detects lots of invalid jumps and dangling pointers inside libxine, like the following: ==23519== Invalid read of size 4 ==23519== at 0x9FE68CC: (within /usr/lib/libxine.so.1.11.1) ==23519== by 0x6B896C7: ??? ==23519== Address 0x6B896D0 is 8 bytes inside a block of size 68 free'd ==23519== at 0x401FF3A: free (vg_replace_malloc.c:235) ==23519== by 0x9FE852C: (within /usr/lib/libxine.so.1.11.1) I'm inclined to believe the bug is there. ==23792== ERROR SUMMARY: 1259 errors from 237 contexts (suppressed: 372 from 4) ==23792== malloc/free: in use at exit: 23,586,935 bytes in 57,571 blocks. ==23792== malloc/free: 1,375,158 allocs, 1,317,588 frees, 154,936,009 bytes allocated. ==23792== LEAK SUMMARY: ==23792== definitely lost: 5,509 bytes in 365 blocks. ==23792== indirectly lost: 5,226 bytes in 147 blocks. ==23792== possibly lost: 17,588 bytes in 477 blocks. ==23792== still reachable: 23,558,612 bytes in 56,582 blocks. ==23792== suppressed: 0 bytes in 0 blocks. Definetely lost: ==23792== 1 bytes in 1 blocks are definitely lost in loss record 7 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x81F4DA3: PlaylistWindow::PlaylistWindow() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80ABCFF: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 40 (24 direct, 16 indirect) bytes in 2 blocks are definitely lost in loss record 339 of 1,222 ==23792== at 0x40206FF: calloc (vg_replace_malloc.c:279) ==23792== by 0xA2E2EB4: snd_output_stdio_attach (in /usr/lib/libasound.so.2.0.0) ==23792== by 0xA99FD79: (within /usr/lib/xine/plugins/1.0.0/xineplug_ao_out_alsa.so) ==23792== by 0x9FF702C: (within /usr/lib/libxine.so.1.11.1) ==23792== 100 (8 direct, 92 indirect) bytes in 2 blocks are definitely lost in loss record 519 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x80CEF1E: CollectionDB::getMyConnection() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80CF477: CollectionDB::query(QString const&) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80E836E: CollectionDB::IDFromValue(QString, QString, bool, bool, bool) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80E9783: CollectionDB::artistID(QString, bool, bool, bool) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x810A6B5: CurrentTrackJob::doJob() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x825F355: ThreadWeaver::Thread::run() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5181BB1: QThreadInstance::start(void*) (qthread_unix.cpp:119) ==23792== by 0x599B364: start_thread (pthread_create.c:261) ==23792== by 0x5B709BD: clone (in /lib/tls/libc-2.3.4.so) ==23792== 168 bytes in 1 blocks are definitely lost in loss record 909 of 1,222 ==23792== at 0x401F445: malloc (vg_replace_malloc.c:149) ==23792== by 0x5F8F333: XcursorCursorsCreate (in /usr/X11R6/lib/libXcursor.so.1.0.2) ==23792== by 0x5F907B7: XcursorImagesLoadCursors (in /usr/X11R6/lib/libXcursor.so.1.0.2) ==23792== by 0x5F90884: XcursorImagesLoadCursor (in /usr/X11R6/lib/libXcursor.so.1.0.2) ==23792== by 0x5F939D7: XcursorTryShapeCursor (in /usr/X11R6/lib/libXcursor.so.1.0.2) ==23792== by 0x5DED340: XCreateGlyphCursor (in /usr/X11R6/lib/libX11.so.6.2) ==23792== by 0x5DED7C8: XCreateFontCursor (in /usr/X11R6/lib/libX11.so.6.2) ==23792== by 0x5122AAF: QCursor::update() const (qcursor_x11.cpp:827) ==23792== by 0x512244C: QCursor::handle() const (qcursor_x11.cpp:383) ==23792== by 0x514D922: qt_x11_enforce_cursor(QWidget*) (qwidget_x11.cpp:190) ==23792== by 0x510B5BD: QApplication::setOverrideCursor(QCursor const&, bool) (qapplication_x11.cpp:2767) ==23792== by 0x47C4B6F: KDirOperator::connectView(KFileView*) (kdiroperator.cpp:1064) ==23792== by 0x47C4D59: KDirOperator::setView(KFileView*) (kdiroperator.cpp:1098) ==23792== by 0x47C4E8E: KDirOperator::setView(KFile::FileView) (kdiroperator.cpp:978) ==23792== by 0x47C4FDA: KDirOperator::setMode(KFile::Mode) (kdiroperator.cpp:1086) ==23792== by 0x814AB1D: FileBrowser::FileBrowser(char const*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x81FA29E: PlaylistWindow::init() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80ABD39: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 216 bytes in 1 blocks are definitely lost in loss record 935 of 1,222 ==23792== at 0x401F445: malloc (vg_replace_malloc.c:149) ==23792== by 0x6C2B635: _XimOpenIM (in /usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2) ==23792== by 0x5E598DD: (within /usr/X11R6/lib/libX11.so.6.2) ==23792== by 0x6C2B1C9: _XimRegisterIMInstantiateCallback (in /usr/X11R6/lib/X11/locale/lib/common/ximcp.so.2) ==23792== by 0x5E599FB: (within /usr/X11R6/lib/libX11.so.6.2) ==23792== by 0x5E28787: XRegisterIMInstantiateCallback (in /usr/X11R6/lib/libX11.so.6.2) ==23792== by 0x5109B35: qt_init_internal(int*, char**, _XDisplay*, unsigned long, unsigned long) (qapplication_x11.cpp:2122) ==23792== by 0x510A394: qt_init(int*, char**, QApplication::Type) (qapplication_x11.cpp:2340) ==23792== by 0x518BCA5: QApplication::construct(int&, char**, QApplication::Type) (qapplication.cpp:813) ==23792== by 0x518B93A: QApplication::QApplication(int&, char**, bool) (qapplication.cpp:773) ==23792== by 0x4CCB5F3: KApplication::KApplication(bool, bool) (kapplication.cpp:623) ==23792== by 0x80ABA59: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 216 bytes in 3 blocks are definitely lost in loss record 936 of 1,222 ==23792== at 0x40206FF: calloc (vg_replace_malloc.c:279) ==23792== by 0x4011BAA: _dl_allocate_tls (dl-tls.c:303) ==23792== by 0x599BBFB: pthread_create GLIBC_2 1 (allocatestack.c:502) ==23792== by 0x82BAC8A: findLockInfo (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x82BBC09: sqlite3OsOpenReadWrite (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x82DDBA0: sqlite3pager_open (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x82CB38A: sqlite3BtreeOpen (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x82BA177: sqlite3BtreeFactory (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x82BA69B: openDatabase (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80CD97A: SqliteConnection::SqliteConnection(SqliteConfig*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80CEF4E: CollectionDB::getMyConnection() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80DB6BF: CollectionDB::initialize() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80DDE4E: CollectionDB::CollectionDB() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80DE4E1: CollectionDB::instance() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x819F919: Playlist::Playlist(QWidget*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x81F8AA9: PlaylistWindow::init() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80ABD39: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 1,456 (360 direct, 1,096 indirect) bytes in 10 blocks are definitely lost in loss record 959 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x8152EA6: HTMLView::loadStyleSheet() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80F7175: ContextBrowser::saveHtmlData() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80FE5EF: ContextBrowser::showHome() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x810A3E7: ContextBrowser::qt_invoke(int, QUObject*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5202A22: QObject::activate_signal(QConnectionList*, QUObject*) (qobject.cpp:2356) ==23792== by 0x56096EB: QTabWidget::currentChanged(QWidget*) (moc_qtabwidget.cpp:147) ==23792== by 0x536E4C9: QTabWidget::showTab(int) (qtabwidget.cpp:652) ==23792== by 0x5609908: QTabWidget::qt_invoke(int, QUObject*) (moc_qtabwidget.cpp:162) ==23792== by 0x4B51C42: KTabWidget::qt_invoke(int, QUObject*) (ktabwidget.moc:388) ==23792== by 0x810A18F: ContextBrowser::qt_invoke(int, QUObject*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5202A22: QObject::activate_signal(QConnectionList*, QUObject*) (qobject.cpp:2356) ==23792== by 0x5202DE4: QObject::activate_signal(int, int) (qobject.cpp:2449) ==23792== by 0x5608D50: QTabBar::selected(int) (moc_qtabbar.cpp:121) ==23792== by 0x5369BAD: QTabBar::show() (qtabbar.cpp:807) ==23792== by 0x5245ED7: QWidget::showChildren(bool) (qwidget.cpp:4125) ==23792== by 0x5245981: QWidget::show() (qwidget.cpp:3984) ==23792== by 0x5245ED7: QWidget::showChildren(bool) (qwidget.cpp:4125) ==23792== by 0x5245981: QWidget::show() (qwidget.cpp:3984) ==23792== by 0x80AF53A: BrowserBar::showHideBrowser(int) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 734 (224 direct, 510 indirect) bytes in 20 blocks are definitely lost in loss record 960 of 1,222 ==23792== at 0x40206FF: calloc (vg_replace_malloc.c:279) ==23792== by 0xA0103DB: xine_xmalloc (in /usr/lib/libxine.so.1.11.1) ==23792== 240 bytes in 30 blocks are definitely lost in loss record 963 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x4208C72: DOM::ElementMappingCache::add(QString const&, DOM::ElementImpl*) (dom_docimpl.cpp:239) ==23792== by 0x421C137: DOM::ElementImpl::updateId(DOM::DOMStringImpl*, DOM::DOMStringImpl*) (dom_docimpl.h:528) ==23792== by 0x421DF26: DOM::ElementImpl::insertedIntoDocument() (dom_string.h:115) ==23792== by 0x42143D4: DOM::NodeBaseImpl::addChild(DOM::NodeImpl*) (dom_nodeimpl.cpp:1327) ==23792== by 0x4231027: khtml::KHTMLParser::insertNode(DOM::NodeImpl*, bool) (htmlparser.cpp:327) ==23792== by 0x4233D46: khtml::KHTMLParser::parseToken(khtml::Token*) (htmlparser.cpp:289) ==23792== by 0x4234850: khtml::HTMLTokenizer::processToken() (htmltokenizer.cpp:1666) ==23792== by 0x42392DC: khtml::HTMLTokenizer::parseTag(khtml::TokenizerString&) (htmltokenizer.cpp:1166) ==23792== by 0x423BE0F: khtml::HTMLTokenizer::write(khtml::TokenizerString const&, bool) (htmltokenizer.cpp:1425) ==23792== by 0x41C37C6: KHTMLPart::write(QString const&) (khtml_part.cpp:1992) ==23792== by 0x81555F4: HTMLView::set(QString const&) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80FE5E1: ContextBrowser::showHome() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x810A3E7: ContextBrowser::qt_invoke(int, QUObject*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5202A22: QObject::activate_signal(QConnectionList*, QUObject*) (qobject.cpp:2356) ==23792== by 0x56096EB: QTabWidget::currentChanged(QWidget*) (moc_qtabwidget.cpp:147) ==23792== by 0x536E4C9: QTabWidget::showTab(int) (qtabwidget.cpp:652) ==23792== by 0x5609908: QTabWidget::qt_invoke(int, QUObject*) (moc_qtabwidget.cpp:162) ==23792== by 0x4B51C42: KTabWidget::qt_invoke(int, QUObject*) (ktabwidget.moc:388) ==23792== by 0x810A18F: ContextBrowser::qt_invoke(int, QUObject*) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 1,712 (360 direct, 1,352 indirect) bytes in 10 blocks are definitely lost in loss record 1,010 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x8152CA7: HTMLView::loadStyleSheet() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80F7317: ContextBrowser::reloadStyleSheet() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5243C02: QWidget::unsetFont() (qwidget.cpp:2989) ==23792== by 0x81F5E19: PlaylistWindow::applySettings() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80A918D: App::applySettings(bool) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80ABD7C: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== 1,692 (360 direct, 1,332 indirect) bytes in 10 blocks are definitely lost in loss record 1,048 of 1,222 ==23792== at 0x401F7D0: operator new(unsigned) (vg_replace_malloc.c:164) ==23792== by 0x8152B1B: HTMLView::loadStyleSheet() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80F7317: ContextBrowser::reloadStyleSheet() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x5243C02: QWidget::unsetFont() (qwidget.cpp:2989) ==23792== by 0x81F5E19: PlaylistWindow::applySettings() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80A918D: App::applySettings(bool) (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x80ABD7C: App::App() (in /usr/local/kde3-r487700/bin/amarokapp) ==23792== by 0x8268679: main (in /usr/local/kde3-r487700/bin/amarokapp) |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From thiago kde org 2005-12-30 14:46 ------- Unfortunately I had not built amaroK with debugging symbols. My system is a Subversion build of KDE 3.5 revision 487700, amaroK from trunk revision 487700, libxine version 1.0.0. |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From markey web de 2005-12-30 17:08 ------- Hm, xine 1.0.0 is quite old, though. Perhaps a newer version fixes it? |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From maacruz gmail com 2005-12-30 17:25 ------- I'm using libxine 1.1.1, so it doesn't fixes it. |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From webmaster phpmyforum de 2006-01-07 12:50 ------- Same Problem here with: - Amarok 1.3.7 (Source) - KDE 3.5 (Kubuntu) - Xine 1.1.0 Screenshot of top follows |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From webmaster phpmyforum de 2006-01-07 12:52 ------- Created an attachment (id=14168) --> (http://bugs.kde.org/attachment.cgi?id=14168&action=view) top screenshot |
|
|
[Bug 119230] memleak in xine engine------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From maacruz gmail com 2006-02-22 21:56 ------- Problem still present on amarok 1.4beta1 |
|
|
[Bug 119230] Memleak in xine engine with crossfading------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 markey web de changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW everconfirmed|0 |1 Summary|memleak in xine engine |Memleak in xine engine with | |crossfading |
|
|
[Bug 119230] Memleak in xine engine with crossfading------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 markey web de changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED ------- Additional Comments From markey web de 2006-03-15 18:23 ------- SVN commit 518913 by markey: Fix a huge memory leak when using xine-engine with crossfading. IROCKSOHARD! BUG: 119230 M +2 -0 ChangeLog M +8 -2 src/engine/xine/xine-scope.c --- trunk/extragear/multimedia/amarok/ChangeLog #518912:518913 @ -21,6 +21,8 @ Peter C. Ndikuwera <pndiku gmail com> (BR 118304) BUGFIXES: + * Fixed a huge memory leak when using xine-engine with crossfading. + (BR 119230) * Sometimes iRiver devices would crash upon disconnecting. * Adjust the Astraweb lyrics script for a layout change on the site. Patch by Andrew Turner <andrewturner512+kdebugs googlemail com>. (BR 123636) --- trunk/extragear/multimedia/amarok/src/engine/xine/xine-scope.c #518912:518913 @ -106,15 +106,21 @ scope_dispose( post_plugin_t *this ) { MyNode *list = ((scope_plugin_t*)this)->list; - MyNode *prev, *node; + MyNode *prev; + MyNode *node = list->next; - for( node = list; node != list; node = prev ) { + /* Free all elements of the list (a ring buffer) */ + do { prev = node->next; free( node->mem ); free( node ); + + node = prev; } + while( node != list ); + free( this ); } |
|
|
[Bug 119230] Memleak in xine engine with crossfading------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From markey web de 2006-03-16 11:49 ------- SVN commit 519133 by markey: Don't forget to free the first element of the buffer. CCBUG: 119230 M +1 -1 xine-scope.c --- trunk/extragear/multimedia/amarok/src/engine/xine/xine-scope.c #519132:519133 @ -107,7 +107,7 @ { MyNode *list = ((scope_plugin_t*)this)->list; MyNode *prev; - MyNode *node = list->next; + MyNode *node = list; /* Free all elements of the list (a ring buffer) */ do { |
|
|
[Bug 119230] Memleak in xine engine with crossfading------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is. http://bugs.kde.org/show_bug.cgi?id=119230 ------- Additional Comments From markey web de 2006-03-17 14:02 ------- SVN commit 519522 by markey: Backport xine engine leak fix. CCBUG: 119230 M +2 -0 ChangeLog M +8 -2 src/engine/xine/xine-scope.c --- branches/stable/extragear/multimedia/amarok/ChangeLog #519521:519522 @ -8,6 +8,8 @ * Support for libtunepimp 0.4. (BR 94988) BUGFIXES: + * Fixed a huge memory leak when using xine-engine with crossfading. + (BR 119230) * Fix memory leak in the helix engine when the player and playlist are not visible. * Stream with URLs containing "&" wouldn't be correctly saved. --- branches/stable/extragear/multimedia/amarok/src/engine/xine/xine-scope.c #519521:519522 @ -106,15 +106,21 @ scope_dispose( post_plugin_t *this ) { MyNode *list = ((scope_plugin_t*)this)->list; - MyNode *prev, *node; + MyNode *prev; + MyNode *node = list; - for( node = list; node != list; node = prev ) { + /* Free all elements of the list (a ring buffer) */ + do { prev = node->next; free( node->mem ); free( node ); + + node = prev; } + while( node != list ); + free( this ); } |
| Free embeddable forum powered by Nabble | Forum Help |