From: Jay Freeman (saurik) Date: Tue, 30 Nov 2010 13:50:13 +0000 (-0800) Subject: Avoid using hasTag: during Package initialization. X-Git-Tag: v1.1.0%b1~469 X-Git-Url: https://git.saurik.com/cydia.git/commitdiff_plain/0a377825005a118bc5f14a26bee745ec432a1a70 Avoid using hasTag: during Package initialization. --- diff --git a/MobileCydia.mm b/MobileCydia.mm index d558ad83..10e8199f 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -2243,8 +2243,17 @@ struct PackageNameOrdering : do { const char *name(tag.Name()); [tags_ addObject:[(NSString *)CYStringCreate(name) autorelease]]; + if (role_ == nil && strncmp(name, "role::", 6) == 0 /*&& strcmp(name, "role::leaper") != 0*/) role_ = (NSString *) CYStringCreate(name + 6); + + if (strncmp(name, "cydia::", 7) == 0) { + if (strcmp(name + 7, "essential") == 0) + essential_ = true; + else if (strcmp(name + 7, "obsolete") == 0) + obsolete_ = true; + } + ++tag; } while (!tag.end()); } @@ -2277,8 +2286,7 @@ struct PackageNameOrdering : _end _profile(Package$initWithVersion$hasTag) - obsolete_ = [self hasTag:@"cydia::obsolete"]; - essential_ = ((iterator_->Flags & pkgCache::Flag::Essential) == 0 ? NO : YES) || [self hasTag:@"cydia::essential"]; + essential_ |= ((iterator_->Flags & pkgCache::Flag::Essential) == 0 ? NO : YES); _end ignored_ = iterator_->SelectedState == pkgCache::State::Hold;