aboutsummaryrefslogtreecommitdiffstats
path: root/transcode.c
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-01 17:40:32 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-09-01 17:40:32 +0000
commit7908180df1364bc6a20cdbf2cb1365f1f0da21fa (patch)
tree4caf1aa63bc2e4fe3b3ef506a074a5fd2a2cf18d /transcode.c
parent6c835ee50ae152daf75d4bd3a63570b7480b1c89 (diff)
downloadruby-7908180df1364bc6a20cdbf2cb1365f1f0da21fa.tar.gz
* tool/transcode-tblgen.rb: record offsets array as index of
byte_array to avoid relocation. * transcode.c (transcode_restartable0): add byte_array to get offsets array. * transcode_data.h (BYTE_LOOKUP_BASE): change return type to uintptr_t. (rb_transcoder): add fields: byte_array, word_array and word_size. * enc/trans/newline.trans: follow rb_transcoder change. * enc/trans/iso2022.trans: ditto. * enc/trans/utf_16_32.trans: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode.c')
-rw-r--r--transcode.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/transcode.c b/transcode.c
index f4409a39ab..bc1597e5b0 100644
--- a/transcode.c
+++ b/transcode.c
@@ -493,10 +493,11 @@ transcode_restartable0(const unsigned char **in_pos, unsigned char **out_pos,
next_byte = (unsigned char)*in_p++;
follow_byte:
- if (next_byte < BYTE_LOOKUP_BASE(next_table)[0] || BYTE_LOOKUP_BASE(next_table)[1] < next_byte)
+#define BL_BASE(next_table) (tr->byte_array + BYTE_LOOKUP_BASE(next_table))
+ if (next_byte < BL_BASE(next_table)[0] || BL_BASE(next_table)[1] < next_byte)
next_info = INVALID;
else {
- unsigned int next_offset = BYTE_LOOKUP_BASE(next_table)[2+next_byte-BYTE_LOOKUP_BASE(next_table)[0]];
+ unsigned int next_offset = BL_BASE(next_table)[2+next_byte-BL_BASE(next_table)[0]];
next_info = (VALUE)BYTE_LOOKUP_INFO(next_table)[next_offset];
}
follow_info: