Browse Source

Tags should use StoreString, not WriteStringInMap.

Jay Freeman (saurik) 7 years ago
parent
commit
35d8bb14e1
2 changed files with 4 additions and 2 deletions
  1. 2 1
      apt-pkg/pkgcachegen.cc
  2. 2 1
      apt-pkg/pkgcachegen.h

+ 2 - 1
apt-pkg/pkgcachegen.cc

@@ -1300,7 +1300,7 @@ bool pkgCacheGenerator::NewTag(pkgCache::VerIterator &Ver,
    
    // Fill it in
    pkgCache::TagIterator Tg(Cache,Cache.TagP + idxTag);
-   map_pointer_t const idxName = WriteStringInMap(NameStart,NameSize);
+   map_pointer_t const idxName = StoreString(TAG,NameStart,NameSize);
    if (idxName == 0)
       return false;
    Tg->Name = idxName;
@@ -1379,6 +1379,7 @@ map_stringitem_t pkgCacheGenerator::StoreString(enum StringType const type, cons
       case PKGNAME: strings = &strPkgNames; break;
       case VERSIONNUMBER: strings = &strVersions; break;
       case SECTION: strings = &strSections; break;
+      case TAG: strings = &strTags; break;
       default: _error->Fatal("Unknown enum type used for string storage of '%.*s'", Size, S); return 0;
    }
 

+ 2 - 1
apt-pkg/pkgcachegen.h

@@ -78,6 +78,7 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
    std::unordered_set<string_pointer, hash> strPkgNames;
    std::unordered_set<string_pointer, hash> strVersions;
    std::unordered_set<string_pointer, hash> strSections;
+   std::unordered_set<string_pointer, hash> strTags;
 #endif
 
    friend class pkgCacheListParser;
@@ -132,7 +133,7 @@ class APT_HIDDEN pkgCacheGenerator					/*{{{*/
 
    public:
 
-   enum StringType { MIXED, PKGNAME, VERSIONNUMBER, SECTION };
+   enum StringType { MIXED, PKGNAME, VERSIONNUMBER, SECTION, TAG };
    map_stringitem_t StoreString(StringType const type, const char * S, unsigned int const Size);
 
 #ifdef APT_PKG_EXPOSE_STRING_VIEW