From e05ac91217833940b4f676ed7625c851bddc33db Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 25 May 2023 08:45:47 +0900 Subject: [PATCH] mruby-struct/struct.c: update the behavior when actual size differs Assertions may be false and terminate the whole process when actual size for struct objects are different. --- mrbgems/mruby-struct/src/struct.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index f0d3d5edc..72e4e64bb 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -524,7 +524,9 @@ mrb_struct_equal(mrb_state *mrb, mrb_value s) if (mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) { return mrb_false_value(); } - mrb_assert(RSTRUCT_LEN(s) == RSTRUCT_LEN(s2)); + if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) { + return mrb_false_value(); + } ptr = RSTRUCT_PTR(s); ptr2 = RSTRUCT_PTR(s2); len = RSTRUCT_LEN(s); @@ -558,7 +560,9 @@ mrb_struct_eql(mrb_state *mrb, mrb_value s) if (mrb_obj_class(mrb, s) != mrb_obj_class(mrb, s2)) { return mrb_false_value(); } - mrb_assert(RSTRUCT_LEN(s) == RSTRUCT_LEN(s2)); + if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) { + return mrb_false_value(); + } ptr = RSTRUCT_PTR(s); ptr2 = RSTRUCT_PTR(s2); len = RSTRUCT_LEN(s);