From c72634f95e8aa15deddb2af3613e8fb9a44d6057 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Peter=20K=C3=BCmmel?= Date: Wed, 16 Apr 2008 19:43:06 +0000 Subject: [PATCH] fix some memory leaks git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24299 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/LayoutFile.cpp | 8 ++++++++ src/LayoutFile.h | 1 + src/frontends/qt4/Menus.cpp | 14 ++++++++++---- src/frontends/qt4/Menus.h | 1 + 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/LayoutFile.cpp b/src/LayoutFile.cpp index d2c1da3749..8f0d9210b5 100644 --- a/src/LayoutFile.cpp +++ b/src/LayoutFile.cpp @@ -47,6 +47,14 @@ LayoutFile::LayoutFile(string const & fn, string const & cln, texClassAvail_ = texClassAvail; } +LayoutFileList::~LayoutFileList() +{ + ClassMap::const_iterator it = classmap_.begin(); + ClassMap::const_iterator en = classmap_.end(); + for (; it != en; ++it) { + delete it->second; + } +} LayoutFileList & LayoutFileList::get() { diff --git a/src/LayoutFile.h b/src/LayoutFile.h index e23d214bd0..fd95c04e91 100644 --- a/src/LayoutFile.h +++ b/src/LayoutFile.h @@ -72,6 +72,7 @@ class LayoutFileList { public: /// LayoutFileList() {} + ~LayoutFileList(); /// \return The sole instance of this class. static LayoutFileList & get(); /// diff --git a/src/frontends/qt4/Menus.cpp b/src/frontends/qt4/Menus.cpp index 982909068f..e591b8bd37 100644 --- a/src/frontends/qt4/Menus.cpp +++ b/src/frontends/qt4/Menus.cpp @@ -58,6 +58,8 @@ #include #include +#include + #include #include #include @@ -1187,7 +1189,7 @@ struct Menus::Impl { /// MenuDefinition menubar_; - typedef QMap > NameMap; + typedef QMap > > NameMap; /// name to menu for \c menu() method. NameMap name_map_; @@ -1400,6 +1402,10 @@ MenuDefinition & Menus::Impl::getMenu(QString const & name) Menus::Menus() : d(new Impl) {} +Menus::~Menus() +{ + delete d; +} void Menus::read(Lexer & lex) { @@ -1513,7 +1519,7 @@ void Menus::fillMenuBar(QMenuBar * qmb, GuiView * view, bool initial) menu->setTitle(label(*m)); qmb->addMenu(menu); - d->name_map_[view][name] = menu; + d->name_map_[view][name] = boost::shared_ptr(menu); } } @@ -1548,14 +1554,14 @@ void Menus::updateMenu(Menu * qmenu) Menu * Menus::menu(QString const & name, GuiView & view) { LYXERR(Debug::GUI, "Context menu requested: " << fromqstr(name)); - Menu * menu = d->name_map_[&view].value(name, 0); + Menu * menu = d->name_map_[&view].value(name, boost::shared_ptr()).get(); if (!menu && !name.startsWith("context-")) { LYXERR0("requested context menu not found: " << fromqstr(name)); return 0; } menu = new Menu(&view, name, true); - d->name_map_[&view][name] = menu; + d->name_map_[&view][name] = boost::shared_ptr(menu); return menu; } diff --git a/src/frontends/qt4/Menus.h b/src/frontends/qt4/Menus.h index f0b0789e20..ee57daf7de 100644 --- a/src/frontends/qt4/Menus.h +++ b/src/frontends/qt4/Menus.h @@ -59,6 +59,7 @@ class Menus { public: Menus(); + ~Menus(); /// bool searchMenu(FuncRequest const & func, -- 2.39.5