Show More
@@ -109,17 +109,36 b' static int gather(struct mpatch_flist *d' | |||||
109 | int postend, c, l; |
|
109 | int postend, c, l; | |
110 |
|
110 | |||
111 | while (s != src->tail) { |
|
111 | while (s != src->tail) { | |
112 | if (s->start + offset >= cut) |
|
112 | int soffset = s->start; | |
|
113 | if (!safeadd(offset, &soffset)) | |||
|
114 | break; /* add would overflow, oh well */ | |||
|
115 | if (soffset >= cut) | |||
113 | break; /* we've gone far enough */ |
|
116 | break; /* we've gone far enough */ | |
114 |
|
117 | |||
115 |
postend = offset |
|
118 | postend = offset; | |
|
119 | if (!safeadd(s->start, &postend) || | |||
|
120 | !safeadd(s->len, &postend)) { | |||
|
121 | break; | |||
|
122 | } | |||
116 | if (postend <= cut) { |
|
123 | if (postend <= cut) { | |
117 | /* save this hunk */ |
|
124 | /* save this hunk */ | |
118 | offset += s->start + s->len - s->end; |
|
125 | int tmp = s->start; | |
|
126 | if (!safesub(s->end, &tmp)) { | |||
|
127 | break; | |||
|
128 | } | |||
|
129 | if (!safeadd(s->len, &tmp)) { | |||
|
130 | break; | |||
|
131 | } | |||
|
132 | if (!safeadd(tmp, &offset)) { | |||
|
133 | break; /* add would overflow, oh well */ | |||
|
134 | } | |||
119 | *d++ = *s++; |
|
135 | *d++ = *s++; | |
120 | } else { |
|
136 | } else { | |
121 | /* break up this hunk */ |
|
137 | /* break up this hunk */ | |
122 |
c = cut |
|
138 | c = cut; | |
|
139 | if (!safesub(offset, &c)) { | |||
|
140 | break; | |||
|
141 | } | |||
123 | if (s->end < c) |
|
142 | if (s->end < c) | |
124 | c = s->end; |
|
143 | c = s->end; | |
125 | l = cut - offset - s->start; |
|
144 | l = cut - offset - s->start; |
General Comments 0
You need to be logged in to leave comments.
Login now