diff options
| author | cremno <[email protected]> | 2015-03-22 23:10:38 +0100 |
|---|---|---|
| committer | cremno <[email protected]> | 2015-03-22 23:10:38 +0100 |
| commit | 7985f75dfa5d5149da9cf643b1afb85ca8d4fa8c (patch) | |
| tree | 4899343eab3658bccbf1020175d452202e2842fc /src/dump.c | |
| parent | 17b77455935472c10803f76635f85bba433289d2 (diff) | |
| download | mruby-7985f75dfa5d5149da9cf643b1afb85ca8d4fa8c.tar.gz mruby-7985f75dfa5d5149da9cf643b1afb85ca8d4fa8c.zip | |
refactor write_pool_block()
No need to write the same assertion in each case (except the default
one). Instead we can assert after the switch statement.
Diffstat (limited to 'src/dump.c')
| -rw-r--r-- | src/dump.c | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/src/dump.c b/src/dump.c index 3113a71d3..534cc7504 100644 --- a/src/dump.c +++ b/src/dump.c @@ -178,45 +178,29 @@ write_pool_block(mrb_state *mrb, mrb_irep *irep, uint8_t *buf) case MRB_TT_FIXNUM: cur += uint8_to_bin(IREP_TT_FIXNUM, cur); /* data type */ str = mrb_fixnum_to_str(mrb, irep->pool[pool_no], 10); - char_ptr = RSTRING_PTR(str); - { - mrb_int tlen; - - tlen = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, tlen, uint16_t, UINT16_MAX); - len = (uint16_t)tlen; - } break; case MRB_TT_FLOAT: cur += uint8_to_bin(IREP_TT_FLOAT, cur); /* data type */ str = mrb_float_to_str(mrb, irep->pool[pool_no], MRB_FLOAT_FMT); - char_ptr = RSTRING_PTR(str); - { - mrb_int tlen; - - tlen = RSTRING_LEN(str); - mrb_assert_int_fit(mrb_int, tlen, uint16_t, UINT16_MAX); - len = (uint16_t)tlen; - } break; case MRB_TT_STRING: cur += uint8_to_bin(IREP_TT_STRING, cur); /* data type */ - char_ptr = RSTRING_PTR(irep->pool[pool_no]); - { - mrb_int tlen; - - tlen = RSTRING_LEN(irep->pool[pool_no]); - mrb_assert_int_fit(mrb_int, tlen, uint16_t, UINT16_MAX); - len = (uint16_t)tlen; - } + str = irep->pool[pool_no]; break; default: continue; } + char_ptr = RSTRING_PTR(str); + { + mrb_int tlen = RSTRING_LEN(str); + mrb_assert_int_fit(mrb_int, tlen, uint16_t, UINT16_MAX); + len = (uint16_t)tlen; + } + cur += uint16_to_bin(len, cur); /* data length */ memcpy(cur, char_ptr, (size_t)len); cur += len; |
