diff options
-rw-r--r-- | data/_apt7/aptbug545699.args | 1 | ||||
-rw-r--r-- | data/_apt7/aptbug545699.diff | 71 |
2 files changed, 72 insertions, 0 deletions
diff --git a/data/_apt7/aptbug545699.args b/data/_apt7/aptbug545699.args new file mode 100644 index 000000000..4dd9cbd34 --- /dev/null +++ b/data/_apt7/aptbug545699.args @@ -0,0 +1 @@ +-p0 diff --git a/data/_apt7/aptbug545699.diff b/data/_apt7/aptbug545699.diff new file mode 100644 index 000000000..336241f9b --- /dev/null +++ b/data/_apt7/aptbug545699.diff @@ -0,0 +1,71 @@ +=== modified file 'apt-pkg/acquire-item.cc' +--- apt-pkg/acquire-item.cc 2009-08-28 19:07:55 +0000 ++++ apt-pkg/acquire-item.cc 2009-09-08 12:50:05 +0000 +@@ -274,7 +274,7 @@ + if(last_space != string::npos) + Description.erase(last_space, Description.size()-last_space); + new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc, +- ExpectedHash, available_patches); ++ ExpectedHash, ServerSha1, available_patches); + Complete = false; + Status = StatDone; + Dequeue(); +@@ -342,9 +342,10 @@ + pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner, + string URI,string URIDesc,string ShortDesc, + HashString ExpectedHash, ++ string ServerSha1, + vector<DiffInfo> diffs) + : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash), +- available_patches(diffs) ++ available_patches(diffs), ServerSha1(ServerSha1) + { + + DestFile = _config->FindDir("Dir::State::lists") + "partial/"; +@@ -430,6 +431,13 @@ + std::clog << "QueueNextDiff: " + << FinalFile << " (" << local_sha1 << ")"<<std::endl; + ++ // final file reached before all patches are applied ++ if(local_sha1 == ServerSha1) ++ { ++ Finish(true); ++ return true; ++ } ++ + // remove all patches until the next matching patch is found + // this requires the Index file to be ordered + for(vector<DiffInfo>::iterator I=available_patches.begin(); +@@ -527,7 +535,7 @@ + // see if there is more to download + if(available_patches.size() > 0) { + new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc, +- ExpectedHash, available_patches); ++ ExpectedHash, ServerSha1, available_patches); + return Finish(); + } else + return Finish(true); + +=== modified file 'apt-pkg/acquire-item.h' +--- apt-pkg/acquire-item.h 2009-08-11 22:52:26 +0000 ++++ apt-pkg/acquire-item.h 2009-09-08 12:30:11 +0000 +@@ -422,6 +422,10 @@ + * off the front? + */ + vector<DiffInfo> available_patches; ++ ++ /** Stop applying patches when reaching that sha1 */ ++ string ServerSha1; ++ + /** The current status of this patch. */ + enum DiffState + { +@@ -475,6 +479,7 @@ + */ + pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc, + string ShortDesc, HashString ExpectedHash, ++ string ServerSha1, + vector<DiffInfo> diffs=vector<DiffInfo>()); + }; + /*}}}*/ + |