summaryrefslogtreecommitdiffhomepage
path: root/src/dump.c
diff options
context:
space:
mode:
authorcremno <[email protected]>2015-03-22 23:10:38 +0100
committercremno <[email protected]>2015-03-22 23:10:38 +0100
commit7985f75dfa5d5149da9cf643b1afb85ca8d4fa8c (patch)
tree4899343eab3658bccbf1020175d452202e2842fc /src/dump.c
parent17b77455935472c10803f76635f85bba433289d2 (diff)
downloadmruby-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.c32
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;