};
@interface Package : NSObject {
- uint32_t era_ : 26;
+ uint32_t era_ : 25;
uint32_t role_ : 3;
uint32_t essential_ : 1;
uint32_t obsolete_ : 1;
uint32_t ignored_ : 1;
+ uint32_t pooled_ : 1;
apr_pool_t *pool_;
}
- (void) dealloc {
+ if (!pooled_)
+ apr_pool_destroy(pool_);
if (parsed_ != NULL)
delete parsed_;
[super dealloc];
- (Package *) initWithVersion:(pkgCache::VerIterator)version withZone:(NSZone *)zone inPool:(apr_pool_t *)pool database:(Database *)database {
if ((self = [super init]) != nil) {
_profile(Package$initWithVersion)
- pool_ = pool;
+ if (pool == NULL)
+ apr_pool_create(&pool_, NULL);
+ else {
+ pool_ = pool;
+ pooled_ = true;
+ }
database_ = database;
era_ = [database era];
if (static_cast<pkgDepCache *>(cache_) == NULL)
return nil;
pkgCache::PkgIterator iterator(cache_->FindPkg([name UTF8String]));
- return iterator.end() ? nil : [Package packageWithIterator:iterator withZone:NULL inPool:pool_ database:self];
+ return iterator.end() ? nil : [Package packageWithIterator:iterator withZone:NULL inPool:NULL database:self];
} }
- (id) init {