summaryrefslogtreecommitdiff
path: root/apt-pkg/srcrecords.cc
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/srcrecords.cc')
-rw-r--r--apt-pkg/srcrecords.cc19
1 files changed, 8 insertions, 11 deletions
diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc
index 942f11569..53d7e604d 100644
--- a/apt-pkg/srcrecords.cc
+++ b/apt-pkg/srcrecords.cc
@@ -39,11 +39,14 @@ pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0)
for (std::vector<pkgIndexFile *>::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;