summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/_apt7/aptbug545699.args1
-rw-r--r--data/_apt7/aptbug545699.diff71
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>());
+ };
+ /*}}}*/
+