summaryrefslogtreecommitdiffhomepage
path: root/src/load.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/load.c b/src/load.c
index 93c16a5e1..f370dc67e 100644
--- a/src/load.c
+++ b/src/load.c
@@ -153,6 +153,7 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag
i64 <<= 32;
i64 |= bin_to_uint32(src);
src += sizeof(uint32_t);
+ pool[i].tt = tt;
pool[i].u.i64 = (int64_t)i64;
}
break;
@@ -160,10 +161,23 @@ read_irep_record_1(mrb_state *mrb, const uint8_t *bin, size_t *len, uint8_t flag
return FALSE; /* INT64 not supported on MRB_32BIT */
#endif
+ case IREP_TT_BIGINT:
+ pool_data_len = bin_to_uint8(src); /* pool data length */
+ src += sizeof(uint8_t);
+ {
+ char *p;
+ pool[i].tt = IREP_TT_BIGINT;
+ p = (char*)mrb_malloc(mrb, pool_data_len+2);
+ memcpy(p, src, pool_data_len+2);
+ pool[i].u.str = (const char*)p;
+ }
+ src += pool_data_len + 2;
+ break;
+
case IREP_TT_FLOAT:
#ifndef MRB_NO_FLOAT
pool[i].tt = tt;
- pool[i].u.f = str_to_double(mrb, (const char*)src);
+ pool[i].u.f = str_to_double(mrb, (const char*)src);
src += sizeof(double);
break;
#else