summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2021-04-20 02:54:38 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-04-20 02:54:38 +0000
commit94af5fff583831d75c92b83f95a6d25a1888c3d1 (patch)
tree6a5fca95ce93294ff06b53dbdfd4e3a81548cea3
parent9a8f19b42f572fb4b8133b1ab4ab016218aebd8f (diff)
parentbe81a990b3e1b1827602cf0fd23c5b55dce3a4de (diff)
downloadbsdiff-94af5fff583831d75c92b83f95a6d25a1888c3d1.tar.gz
Merge "Add comment explaining why we need custom logic to parse int" am: be81a990b3
Original change: https://android-review.googlesource.com/c/platform/external/bsdiff/+/1680665 Change-Id: Ie12b010d9c27b95ef7c4825887b55a969a6fee3b
-rw-r--r--utils.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/utils.cc b/utils.cc
index c3e613e..c82eb98 100644
--- a/utils.cc
+++ b/utils.cc
@@ -7,6 +7,11 @@
namespace bsdiff {
int64_t ParseInt64(const uint8_t* buf) {
+ // BSPatch uses a non-standard encoding of integers.
+ // Highest bit of that integer is used as a sign bit, 1 = negative
+ // and 0 = positive.
+ // Therefore, if the highest bit is set, flip it, then do 2's complement
+ // to get the integer in standard form
int64_t result = buf[7] & 0x7F;
for (int i = 6; i >= 0; i--) {
result <<= 8;