1 Ripped from Debian patchset 3.6-11
3 --- recode-3.6.orig/src/libiconv.c
4 +++ recode-3.6/src/libiconv.c
6 memcpy() doesn't do here, because the regions might overlap.
7 memmove() isn't worth it, because we rarely have to move more
9 - if (input > input_buffer && input_left > 0)
10 + cursor = input_buffer;
13 - cursor = input_buffer;
15 - *cursor++ = *input++;
16 - while (--input_left > 0);
17 + if (input > input_buffer)
20 + *cursor++ = *input++;
21 + while (--input_left > 0);
24 + cursor += input_left;
28 --- recode-3.6.orig/src/request.c
29 +++ recode-3.6/src/request.c
31 if (task->output.cursor + 4 >= task->output.limit)
33 RECODE_OUTER outer = task->request->outer;
34 - size_t old_size = task->output.limit - task->output.buffer;
35 + size_t old_size = task->output.cursor - task->output.buffer;
36 size_t new_size = task->output.cursor + 4 - task->output.buffer;
38 /* FIXME: Rethink about how the error should be reported. */
39 --- recode-3.6.orig/src/task.c
40 +++ recode-3.6/src/task.c
43 success = transform_mere_copy (subtask);
45 + task->output = subtask->output;
47 if (subtask->input.name && *subtask->input.name)
48 fclose (subtask->input.file);
49 if (subtask->output.name && *subtask->output.name)