Status of KDEsupport

Adriaan de Groot <[email protected]>
Newsgroups gmane.comp.kde.solaris
Message-ID <[email protected]>
OK, after dropping all optimization flags from Qt in CVSDude I have a working 
Qt 4.1.3 -- on the todo list is figuring out what went wrong with the other 
flags, since yuri has pretty much the same flags and a non-broken Qt. As of 
just now, kdesupport compiles out of KDE SVN:

At revision 711625.

Well, almost. There are two patches needed. Find them attached. The one deals 
with stdcxx's map implementation which is different from GCC's; incomplete 
types may not be used in maps. The other adds stdcxx to the libraries linked 
by the C bindings for taglib. Neither are in KDE SVN; the latter seems a bit 
dorky and the former needs maintainer approval, since it's a serious change.

-- 
These are your friends - Adem
    GPG: FEA2 A3FE Adriaan de Groot

___________________________________________________
This message is from the kde-solaris mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde-solaris.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.
strigi.diff (text/x-diff, 3.9 KB)
Index: strigi/src/streams/archivereader.cpp
===================================================================
--- strigi/src/streams/archivereader.cpp	(revision 711535)
+++ strigi/src/streams/archivereader.cpp	(working copy)
@@ -56,6 +56,9 @@
  */
 class ArchiveEntryCache {
 public:
+    class SubEntry;
+    typedef std::map<std::string, SubEntry *> SubEntryMap;
+
     /**
      * @brief Represents an entry in the cache.
      */
@@ -65,7 +68,7 @@
         EntryInfo entry;
         /** A list of subentries of this entry. */
         //can't define staticly constructed object while object is being defined
-        std::map<std::string, SubEntry> entries;
+        SubEntryMap entries;
         /**
          * @brief The number of entries in the cache below and including
          * this one.
@@ -76,7 +79,7 @@
         /** Constructor */
         SubEntry() { }
         /** Destructor */
-        virtual ~SubEntry() {}
+        virtual ~SubEntry();
     };
     /**
      * @brief Represents a top-level entry in the cache
@@ -130,14 +133,23 @@
     void print() const;
 };
 
+ArchiveEntryCache::SubEntry::~SubEntry() {
+    SubEntryMap::iterator i;
+    for (i=entries.begin(); i!=entries.end(); ++i) {
+        delete i->second;
+    }
+    // Probably superfluous
+    entries.clear();
+}
+
 void
 ArchiveEntryCache::print() const {
     std::map<std::string, RootSubEntry>::const_iterator j;
     for (j=cache.begin(); j!=cache.end(); ++j) {
         printf("x %s\n", j->first.c_str());
-        std::map<std::string, SubEntry>::const_iterator i;
+        SubEntryMap::const_iterator i;
         for (i = j->second.entries.begin(); i != j->second.entries.end(); ++i) {
-            printf("- %s ", i->second.entry.filename.c_str());
+            printf("- %s ", i->second->entry.filename.c_str());
         }
         printf("\n");
     }
@@ -145,9 +157,9 @@
 int32_t
 ArchiveEntryCache::SubEntry::count() const {
     int32_t count = 1;
-    map<string, SubEntry>::const_iterator i;
+    SubEntryMap::const_iterator i;
     for (i = entries.begin(); i != entries.end(); ++i) {
-        count += i->second.count();
+        count += i->second->count();
     }
     return count;
 }
@@ -179,7 +191,7 @@
     }
     const SubEntry* e = &ei->second;
 
-    map<string, SubEntry>::const_iterator i;
+    SubEntryMap::const_iterator i;
 
     size_t p = ei->first.length();
     do {
@@ -194,7 +206,7 @@
         if (i == e->entries.end()) {
             e = 0;
         } else {
-            e = &i->second;
+            e = i->second;
             p = np;
         }
         if (p == url.length()) {
@@ -268,19 +280,19 @@
     se.entry.filename = name;
 
     // find the right entry
-    map<string, ArchiveEntryCache::SubEntry>::iterator ii;
+    ArchiveEntryCache::SubEntryMap::iterator ii;
     ArchiveEntryCache::SubEntry* parent = &e;
     for (uint i=0; i<names.size(); ++i) {
         ii = parent->entries.find(names[i]);
         if (ii == parent->entries.end()) {
-            ArchiveEntryCache::SubEntry newse;
-            newse.entry.filename = names[i];
-            newse.entry.type = EntryInfo::Dir;
-            newse.entry.size = 0;
+            ArchiveEntryCache::SubEntry *newse = new ArchiveEntryCache::SubEntry;
+            newse->entry.filename = names[i];
+            newse->entry.type = EntryInfo::Dir;
+            newse->entry.size = 0;
             parent->entries[names[i]] = newse;
             ii = parent->entries.find(names[i]);
         }
-        parent = &ii->second;
+        parent = ii->second;
     }
     *parent = se;
 }
@@ -602,9 +614,9 @@
     }
 
     if (subentry) {
-        map<string, ArchiveEntryCache::SubEntry>::const_iterator i;
+        ArchiveEntryCache::SubEntryMap::const_iterator i;
         for (i = subentry->entries.begin(); i != subentry->entries.end(); ++i) {
-            v.push_back(i->second.entry);
+            v.push_back(i->second->entry);
         }
     }
     DirLister dl(v);
taglib.diff (text/x-diff, 525 B)
Index: taglib/bindings/c/CMakeLists.txt
===================================================================
--- taglib/bindings/c/CMakeLists.txt	(revision 711098)
+++ taglib/bindings/c/CMakeLists.txt	(working copy)
@@ -33,7 +33,7 @@
   # stlport4 and stdcxx -- make this a mess. We really only
   # support stdcxx, but won't force the issue here.
   #
-  TARGET_LINK_LIBRARIES(tag_c Crun)
+  TARGET_LINK_LIBRARIES(tag_c stdcxx Crun)
 ENDIF(HAVE_CRUN_LIB)
 
 SET_TARGET_PROPERTIES(tag_c PROPERTIES VERSION 0.0.0 SOVERSION 0 )
signature.asc (application/pgp-signature, 187 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (FreeBSD)

iD8DBQBG5+pOdqzuAf6io/4RAlsGAJ9HZkZX48KAAZbP4Xc85HHW8kiZLACfQqLE
buVksoRLhv3VOohCqFUxq8E=
=5cCD
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.