OSDN Git Service
(root)
/
git-core
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'mh/ref-locking-fix'
[git-core/git.git]
/
diff-delta.c
diff --git
a/diff-delta.c
b/diff-delta.c
index
3797ce6
..
e496433
100644
(file)
--- a/
diff-delta.c
+++ b/
diff-delta.c
@@
-319,7
+319,9
@@
create_delta(const struct delta_index *index,
const void *trg_buf, unsigned long trg_size,
unsigned long *delta_size, unsigned long max_size)
{
const void *trg_buf, unsigned long trg_size,
unsigned long *delta_size, unsigned long max_size)
{
- unsigned int i, outpos, outsize, moff, msize, val;
+ unsigned int i, val;
+ off_t outpos, moff;
+ size_t l, outsize, msize;
int inscnt;
const unsigned char *ref_data, *ref_top, *data, *top;
unsigned char *out;
int inscnt;
const unsigned char *ref_data, *ref_top, *data, *top;
unsigned char *out;
@@
-336,20
+338,20
@@
create_delta(const struct delta_index *index,
return NULL;
/* store reference buffer size */
return NULL;
/* store reference buffer size */
-
i
= index->src_size;
- while (
i
>= 0x80) {
- out[outpos++] =
i
| 0x80;
-
i
>>= 7;
+
l
= index->src_size;
+ while (
l
>= 0x80) {
+ out[outpos++] =
l
| 0x80;
+
l
>>= 7;
}
}
- out[outpos++] =
i
;
+ out[outpos++] =
l
;
/* store target buffer size */
/* store target buffer size */
-
i
= trg_size;
- while (
i
>= 0x80) {
- out[outpos++] =
i
| 0x80;
-
i
>>= 7;
+
l
= trg_size;
+ while (
l
>= 0x80) {
+ out[outpos++] =
l
| 0x80;
+
l
>>= 7;
}
}
- out[outpos++] =
i
;
+ out[outpos++] =
l
;
ref_data = index->src_buf;
ref_top = ref_data + index->src_size;
ref_data = index->src_buf;
ref_top = ref_data + index->src_size;
@@
-452,6
+454,9
@@
create_delta(const struct delta_index *index,
moff += msize;
msize = left;
moff += msize;
msize = left;
+ if (moff > 0xffffffff)
+ msize = 0;
+
if (msize < 4096) {
int j;
val = 0;
if (msize < 4096) {
int j;
val = 0;