summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-pack/src/pack.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2019-07-15 11:23:50 +0900
committerdearblue <[email protected]>2019-07-14 12:03:44 +0900
commitfd899481643feeed874c95060fa50cb75f9d993a (patch)
tree1b4152a5fa21d8602a9028963c5701bb0bc3bb8a /mrbgems/mruby-pack/src/pack.c
parent4861be1171e63d94d8924bc35a39949f691ec427 (diff)
downloadmruby-fd899481643feeed874c95060fa50cb75f9d993a.tar.gz
mruby-fd899481643feeed874c95060fa50cb75f9d993a.zip
Fix empty array refers; ref #4556
For example, `"".unpack("")` evaluates to `[]`.
Diffstat (limited to 'mrbgems/mruby-pack/src/pack.c')
-rw-r--r--mrbgems/mruby-pack/src/pack.c7
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;
}