|
@@ -213,7 +213,8 @@ static int process_zinfo_subtract ( struct input_file *input,
|
213
|
213
|
size_t datasize ) {
|
214
|
214
|
size_t offset = subtract->offset;
|
215
|
215
|
void *target;
|
216
|
|
- long delta;
|
|
216
|
+ signed long raw_delta;
|
|
217
|
+ signed long delta;
|
217
|
218
|
unsigned long old;
|
218
|
219
|
unsigned long new;
|
219
|
220
|
|
|
@@ -224,9 +225,9 @@ static int process_zinfo_subtract ( struct input_file *input,
|
224
|
225
|
}
|
225
|
226
|
|
226
|
227
|
target = ( output->buf + offset );
|
227
|
|
- delta = ( ( align ( output->len, subtract->divisor ) -
|
228
|
|
- align ( input->len, subtract->divisor ) )
|
229
|
|
- / subtract->divisor );
|
|
228
|
+ raw_delta = ( align ( output->len, subtract->divisor ) -
|
|
229
|
+ align ( input->len, subtract->divisor ) );
|
|
230
|
+ delta = ( raw_delta / ( ( signed long ) subtract->divisor ) );
|
230
|
231
|
|
231
|
232
|
switch ( datasize ) {
|
232
|
233
|
case 1: {
|