]> git.lyx.org Git - features.git/commitdiff
fix some memory leaks
authorPeter Kümmel <syntheticpp@gmx.net>
Wed, 16 Apr 2008 19:43:06 +0000 (19:43 +0000)
committerPeter Kümmel <syntheticpp@gmx.net>
Wed, 16 Apr 2008 19:43:06 +0000 (19:43 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24299 a592a061-630c-0410-9148-cb99ea01b6c8

src/LayoutFile.cpp
src/LayoutFile.h
src/frontends/qt4/Menus.cpp
src/frontends/qt4/Menus.h

index d2c1da37490e50f7ff157f2163936d66aa92ca92..8f0d9210b52245c4e704da30dc78c87ddf8ea425 100644 (file)
@@ -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() 
 {
index e23d214bd0cec33d5d88a4ec4f9d596334b44ede..fd95c04e91ffab735187cfff1372cf3ad3a3904f 100644 (file)
@@ -72,6 +72,7 @@ class LayoutFileList {
 public:
        ///
        LayoutFileList() {}
+       ~LayoutFileList();
        /// \return The sole instance of this class.
        static LayoutFileList & get();
        ///
index 982909068feb1ef54d8f5a06d100c2f7b27ba484..e591b8bd372bc210cbfea5db769c1018cf65264d 100644 (file)
@@ -58,6 +58,8 @@
 #include <QMenuBar>
 #include <QString>
 
+#include <boost/shared_ptr.hpp>
+
 #include <algorithm>
 #include <ostream>
 #include <vector>
@@ -1187,7 +1189,7 @@ struct Menus::Impl {
        ///
        MenuDefinition menubar_;
 
-       typedef QMap<GuiView *, QHash<QString, Menu *> > NameMap;
+       typedef QMap<GuiView *, QHash<QString, boost::shared_ptr<Menu> > > 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>(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<Menu>()).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>(menu);
        return menu;
 }
 
index f0b0789e20264666fdca6c377c29408523ddbf85..ee57daf7dee37b79b75cbd3ac792976ba35a39db 100644 (file)
@@ -59,6 +59,7 @@ class Menus
 {
 public:
        Menus();
+       ~Menus();
        
        ///
        bool searchMenu(FuncRequest const & func,