diff options
Diffstat (limited to 'src/load.c')
| -rw-r--r-- | src/load.c | 16 |
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 |
