diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-04-26 13:03:50 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-04-26 13:03:50 +0000 |
commit | 0881a39acd7d3dfa6cdbea76f80dabd939996807 (patch) | |
tree | c34f3e6388b8fd1e78704d1bd9b583a5822a52ef /transcode.c | |
parent | 67798d11b8114b4528df537a425cc83daa84f728 (diff) | |
download | bundler-0881a39acd7d3dfa6cdbea76f80dabd939996807.tar.gz |
* transcode.c (ASIS): added for multi byte direct map.
* transcode.c (transcode_restartable0): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23294 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r-- | transcode.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/transcode.c b/transcode.c index aeb9fe5cd7..fba247a718 100644 --- a/transcode.c +++ b/transcode.c @@ -505,6 +505,7 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, case 30: goto resume_label30; case 31: goto resume_label31; case 32: goto resume_label32; + case 33: goto resume_label33; } while (1) { @@ -539,8 +540,16 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos, } follow_info: switch (next_info & 0x1F) { - case NOMAP: /* xxx: copy last byte only? */ - SUSPEND_OBUF(3); *out_p++ = next_byte; + case NOMAP: + SUSPEND_OBUF(3); *out_p++ = next_byte; + continue; + case ASIS: + { + const unsigned char *p = inchar_start; + while (p < in_p) { + SUSPEND_OBUF(33); *out_p++ = (unsigned char)*p++; + } + } continue; case 0x00: case 0x04: case 0x08: case 0x0C: case 0x10: case 0x14: case 0x18: case 0x1C: |