aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--transcode.c23
2 files changed, 18 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index e4e78495b6..3416cbc79e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Jun 16 20:07:09 2009 NARUSE, Yui <naruse@ruby-lang.org>
+
+ * transcode.c (transcode_restartable0): refix can't build with VC9.
+
Tue Jun 16 16:09:59 2009 TAKANO Mitsuhiro (takano32) <tak@no32.tk>
* parse.y (parser_read_escape, parser_tokadd_escape):
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);