]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/pkgcachegen.cc
* apt-pkg/acquire.cc:
[apt.git] / apt-pkg / pkgcachegen.cc
index 4e186f4669e5b582eea0b9dd62bfbedee9f0337b..397c198293a934331ef98c73796e3a61075fe313 100644 (file)
@@ -139,10 +139,21 @@ bool pkgCacheGenerator::MergeList(ListParser &List,
         {
            pkgCache::DescIterator Desc = Ver.DescriptionList();
            map_ptrloc *LastDesc = &Ver->DescriptionList;
-
-           for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++)
+           bool duplicate=false;
+
+           // don't add a new description if we have one for the given
+           // md5 && language
+           for ( ; Desc.end() == false; Desc++)
+              if (MD5SumValue(Desc.md5()) == CurMd5 && 
+                  Desc.LanguageCode() == List.DescriptionLanguage())
+                 duplicate=true;
+           if(duplicate)
+              continue;
+           
+           for (Desc = Ver.DescriptionList();
+                Desc.end() == false; 
+                LastDesc = &Desc->NextDesc, Desc++)
            {
-
               if (MD5SumValue(Desc.md5()) == CurMd5) 
                {
                  // Add new description
@@ -434,7 +445,8 @@ bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
 // ---------------------------------------------------------------------
 /* This puts a description structure in the linked list */
 map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
-                                           const string &Lang, const MD5SumValue &md5sum,
+                                           const string &Lang, 
+                                            const MD5SumValue &md5sum,
                                            map_ptrloc Next)
 {
    // Get a structure
@@ -781,7 +793,7 @@ static bool BuildCache(pkgCacheGenerator &Gen,
 bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
                        MMap **OutMap,bool AllowMem)
 {
-   unsigned long MapSize = _config->FindI("APT::Cache-Limit",16*1024*1024);
+   unsigned long MapSize = _config->FindI("APT::Cache-Limit",24*1024*1024);
    
    vector<pkgIndexFile *> Files;
    for (vector<metaIndex *>::const_iterator i = List.begin();
@@ -928,7 +940,7 @@ bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress,
 /* */
 bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutMap)
 {
-   unsigned long MapSize = _config->FindI("APT::Cache-Limit",12*1024*1024);
+   unsigned long MapSize = _config->FindI("APT::Cache-Limit",20*1024*1024);
    vector<pkgIndexFile *> Files;
    unsigned long EndOfSource = Files.size();
    if (_system->AddStatusFiles(Files) == false)