[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

kdenonbeta/kdedebian/kapture/libcapture



CVS commit by mornfall: 

Fix few debtags-related crashes (startup without debtags, empty
debtags filter).


  M +7 -3      filters.cpp   1.4
  M +7 -10     pkgmanager.cpp   1.14


--- kdenonbeta/kdedebian/kapture/libcapture/filters.cpp  #1.3:1.4
@@ -131,4 +131,5 @@ MAKE_GROUPER_FACTORY (PkgTagFilter)
 PkgTagFilter::PkgTagFilter (const argmap &a)
 {
+    m_filter = false;
     argmap::const_iterator found = a . find ("string");
     if (found != a . end ()) {
@@ -144,6 +145,7 @@ PkgTagFilter::PkgTagFilter (const argmap
         /* for (OpSet <string>::iterator i = m_items . begin (); i != m_items . end (); i ++)
             cerr << "have item in m_items: " << *i << endl; */
+        if (m_expr)
         m_filter = true;
-    } else m_filter = false;
+    };
 }
                                                             /* }}} */
@@ -156,5 +158,7 @@ bool PkgTagFilter::filterCondition (Feed
         cerr << "evaling on tagset: " ;
         for (OpSet <string>::const_iterator i = t -> */
-    return m_expr -> eval (t ? *t : OpSet <string> ());
+    if (t)
+        return m_expr -> eval (*t);
+    else return true;
     /* if (m_expr -> eval (t ? *t : OpSet <string> ()))
         return true;

--- kdenonbeta/kdedebian/kapture/libcapture/pkgmanager.cpp  #1.13:1.14
@@ -155,6 +155,11 @@ bool PkgManager::loadTags ()
     m_tagColl = new TagCollection <std::string>;
 
-    // XXX check for presence!
-    // XXX allow updates
+    if (access ("/var/lib/debtags/implications", R_OK)
+            || access ("/var/lib/debtags/derived-tags", R_OK)
+            || access ("/var/lib/debtags/package-tags", R_OK))
+    {
+        cerr << "WARNING: could not open tags database; please run update" << endl;
+        return false;
+    }
 
     FilterChain<string> inp;
@@ -174,17 +179,9 @@ bool PkgManager::loadTags ()
 
     capture::TagcollBuilder <string> builder (m_tagColl);
-    // TagcollConsumer *cons = &builder;
     inp . setConsumer (&builder);
     loadTagColl ("/var/lib/debtags/package-tags", merger);
     merger . output (inp);
-    // *m_tagColl = builder -> collection ();
     PkgCacheTagcollBuilder cacheTags (m_cache);
     m_tagColl -> output (cacheTags);
-    /* {
-        OpSet <string> items;
-        items = m_tagColl -> getAllItems ();
-        for (OpSet <string>::iterator i = items . begin (); i != items . end (); i ++)
-            cerr << "have item in m_items: " << *i << endl;
-    } */
 
     notifyRebuild ();




Reply to: