diff options
| author | dearblue <[email protected]> | 2019-07-15 11:23:50 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2019-07-14 12:03:44 +0900 |
| commit | fd899481643feeed874c95060fa50cb75f9d993a (patch) | |
| tree | 1b4152a5fa21d8602a9028963c5701bb0bc3bb8a /mrbgems/mruby-pack/src | |
| parent | 4861be1171e63d94d8924bc35a39949f691ec427 (diff) | |
| download | mruby-fd899481643feeed874c95060fa50cb75f9d993a.tar.gz mruby-fd899481643feeed874c95060fa50cb75f9d993a.zip | |
Fix empty array refers; ref #4556
For example, `"".unpack("")` evaluates to `[]`.
Diffstat (limited to 'mrbgems/mruby-pack/src')
| -rw-r--r-- | mrbgems/mruby-pack/src/pack.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/mrbgems/mruby-pack/src/pack.c b/mrbgems/mruby-pack/src/pack.c index 894c4555f..9f091194b 100644 --- a/mrbgems/mruby-pack/src/pack.c +++ b/mrbgems/mruby-pack/src/pack.c @@ -1299,7 +1299,12 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single) if (single) break; } - if (single) return RARRAY_PTR(result)[0]; + if (single) { + if (RARRAY_LEN(result) > 0) { + return RARRAY_PTR(result)[0]; + } + return mrb_nil_value(); + } return result; } |
