[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs
From:       Daniel Teske <teske () squorn ! de>
Date:       2008-07-06 12:41:15
Message-ID: 1215348075.554232.17792.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 828708 by teske:

Fixes: Crashing of open file dialog and dolphin if the file 
KDEHOME/share/apps/kfileplaces/bookmarks.xml is inaccessible.
Mainly adding a few checks for null bookmarks.
BUG: 163501



 M  +7 -2      kfile/kfileplacesitem.cpp  
 M  +8 -7      kfile/kfileplacesmodel.cpp  
 M  +7 -3      kio/bookmarks/kbookmark.cc  


--- trunk/KDE/kdelibs/kfile/kfileplacesitem.cpp #828707:828708
@@ -179,6 +179,8 @@
                                           const QString &iconName)
 {
     KBookmarkGroup root = manager->root();
+    if (root.isNull())
+        return KBookmark();
     KBookmark bookmark = root.addBookmark(label, url, iconName);
     bookmark.setMetaDataItem("ID", generateNewId());
 
@@ -191,7 +193,8 @@
                                           const QString &iconName)
 {
     KBookmark bookmark = createBookmark(manager, label, url, iconName);
-    bookmark.setMetaDataItem("isSystemItem", "true");
+    if (!bookmark.isNull())
+        bookmark.setMetaDataItem("isSystemItem", "true");
     return bookmark;
 }
 
@@ -200,9 +203,11 @@
                                                 const QString &udi)
 {
     KBookmarkGroup root = manager->root();
+    if (root.isNull())
+        return KBookmark();
     KBookmark bookmark = root.createNewSeparator();
     bookmark.setMetaDataItem("UDI", udi);
-    bookmark.setMetaDataItem("isSystemItem", "true");
+    bookmark.setMetaDataItem("isSystemItem", "true");    
     return bookmark;
 }
 
--- trunk/KDE/kdelibs/kfile/kfileplacesmodel.cpp #828707:828708
@@ -425,13 +425,14 @@
     // Add bookmarks for the remaining devices, they were previously unknown
     foreach (const QString &udi, devices) {
         bookmark = KFilePlacesItem::createDeviceBookmark(bookmarkManager, udi);
-
-        KFilePlacesItem *item = new KFilePlacesItem(bookmarkManager,
-                                                    bookmark.address(), udi);
-        connect(item, SIGNAL(itemChanged(const QString&)),
-                q, SLOT(_k_itemChanged(const QString&)));
-        // TODO: Update bookmark internal element
-        items << item;
+        if (!bookmark.isNull()) {
+            KFilePlacesItem *item = new KFilePlacesItem(bookmarkManager,
+                                                        bookmark.address(), udi);
+            connect(item, SIGNAL(itemChanged(const QString&)),
+                    q, SLOT(_k_itemChanged(const QString&)));
+            // TODO: Update bookmark internal element
+            items << item;
+        }
     }
 
     return items;
--- trunk/KDE/kdelibs/kio/bookmarks/kbookmark.cc #828707:828708
@@ -156,7 +156,8 @@
 
 KBookmarkGroup KBookmarkGroup::createNewFolder( const QString & text )
 {
-    Q_ASSERT(!element.isNull());
+    if (isNull())
+        return KBookmarkGroup();
     QDomDocument doc = element.ownerDocument();
     QDomElement groupElem = doc.createElement( "folder" );
     element.appendChild( groupElem );
@@ -169,7 +170,8 @@
 
 KBookmark KBookmarkGroup::createNewSeparator()
 {
-    Q_ASSERT(!element.isNull());
+    if (isNull())
+        return KBookmark();
     QDomDocument doc = element.ownerDocument();
     Q_ASSERT(!doc.isNull());
     QDomElement sepElem = doc.createElement( "separator" );
@@ -213,7 +215,9 @@
 
 KBookmark KBookmarkGroup::addBookmark( const QString & text, const KUrl & url, const QString & icon )
 {
-    QDomDocument doc = element.ownerDocument();
+    if (isNull())
+        return KBookmark();
+    QDomDocument doc = element.ownerDocument();    
     QDomElement elem = doc.createElement( "bookmark" );
     elem.setAttribute( "href", url.url() ); // gives us utf8
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic