diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-07-20 13:33:13 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-10-12 16:21:23 +0900 |
| commit | 8b3f3c0bf3551c4808ce2e9ab58fcca480e0ab9c (patch) | |
| tree | 0189545db956f3c19e74353aaa88f23a61257c8a /src/dump.c | |
| parent | cf2aabdad6922eca1317f8541672e6176fc4c7b5 (diff) | |
| download | mruby-8b3f3c0bf3551c4808ce2e9ab58fcca480e0ab9c.tar.gz mruby-8b3f3c0bf3551c4808ce2e9ab58fcca480e0ab9c.zip | |
Fix the bug by the combination with `MRB_64BIT` and `MRB_INT32`.
Which is caused by `MRB_NAN_BOXING`.
Diffstat (limited to 'src/dump.c')
| -rw-r--r-- | src/dump.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/dump.c b/src/dump.c index aeb23d033..6acba12c2 100644 --- a/src/dump.c +++ b/src/dump.c @@ -934,14 +934,19 @@ dump_pool(mrb_state *mrb, const mrb_pool_value *p, FILE *fp) { if (p->tt & IREP_TT_NFLAG) { /* number */ switch (p->tt) { - case IREP_TT_INT32: - fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); - break; #ifdef MRB_64BIT case IREP_TT_INT64: - fprintf(fp, "{IREP_TT_INT64, {.i64=%" PRId64 "}},\n", p->u.i64); + if (p->u.i64 < INT32_MIN || INT32_MAX < p->u.i64) { + fprintf(fp, "{IREP_TT_INT64, {.i64=%" PRId64 "}},\n", p->u.i64); + } + else { + fprintf(fp, "{IREP_TT_INT32, {.i64=%" PRId64 "}},\n", p->u.i64); + } break; #endif + case IREP_TT_INT32: + fprintf(fp, "{IREP_TT_INT32, {.i32=%" PRId32 "}},\n", p->u.i32); + break; case IREP_TT_FLOAT: if (p->u.f == 0) { fprintf(fp, "{IREP_TT_FLOAT, {.f=%#.1f}},\n", p->u.f); |
