diff options
Diffstat (limited to 'transcode.c')
-rw-r--r-- | transcode.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/transcode.c b/transcode.c index 7d2d115cb3..524ea660dc 100644 --- a/transcode.c +++ b/transcode.c @@ -540,15 +540,20 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, follow_info: switch (next_info & 0x1F) { case NOMAP: - { - const unsigned char *pend = in_p; - in_p = inchar_start; - while (in_p < pend) { - next_byte = (unsigned char)*in_p++; - SUSPEND_OBUF(3); *out_p++ = next_byte; - } - } - continue; + { + const unsigned char *p = inchar_start; + writebuf_off = 0; + while (p < in_p) { + TRANSCODING_WRITEBUF(tc)[writebuf_off++] = (unsigned char)*p++; + } + writebuf_len = writebuf_off; + writebuf_off = 0; + while (writebuf_off < writebuf_len) { + SUSPEND_OBUF(3); + *out_p++ = TRANSCODING_WRITEBUF(tc)[writebuf_off++]; + } + } + continue; case 0x00: case 0x04: case 0x08: case 0x0C: case 0x10: case 0x14: case 0x18: case 0x1C: SUSPEND_AFTER_OUTPUT(25); |