X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/e8afd16892e87a6e2f17c1019ee455f5583387c2..562f0774f8f04d978c7cea69a29c131a0e0ec75f:/apt-pkg/srcrecords.cc diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc index bbab9d796..53d7e604d 100644 --- a/apt-pkg/srcrecords.cc +++ b/apt-pkg/srcrecords.cc @@ -31,7 +31,7 @@ // SrcRecords::pkgSrcRecords - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Open all the source index files */ -pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0), Current(0) +pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0) { for (pkgSourceList::const_iterator I = List.begin(); I != List.end(); ++I) { @@ -39,11 +39,14 @@ pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0), Current(0 for (std::vector::const_iterator J = Indexes->begin(); J != Indexes->end(); ++J) { - Parser* P = (*J)->CreateSrcParser(); - if (_error->PendingError() == true) - return; - if (P != 0) - Files.push_back(P); + _error->PushToStack(); + Parser* P = (*J)->CreateSrcParser(); + bool const newError = _error->PendingError(); + _error->MergeWithStack(); + if (newError) + return; + if (P != 0) + Files.push_back(P); } } @@ -93,8 +96,6 @@ const pkgSrcRecords::Parser* pkgSrcRecords::Step() // Step to the next record, possibly switching files while ((*Current)->Step() == false) { - if (_error->PendingError() == true) - return 0; ++Current; if (Current == Files.end()) return 0; @@ -115,10 +116,6 @@ pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool const &SrcOn if(Step() == 0) return 0; - // IO error somehow - if (_error->PendingError() == true) - return 0; - // Source name hit if ((*Current)->Package() == Package) return *Current; @@ -180,5 +177,5 @@ bool pkgSrcRecords::Parser::Files2(std::vector &F2)/*{{{*/ /*}}}*/ -pkgSrcRecords::Parser::Parser(const pkgIndexFile *Index) : iIndex(Index) {} +pkgSrcRecords::Parser::Parser(const pkgIndexFile *Index) : d(NULL), iIndex(Index) {} pkgSrcRecords::Parser::~Parser() {}