Skip to content

Commit dffd705

Browse files
committed
Fix segmentation fault while passing data in mruby binding
1 parent bf76b90 commit dffd705

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

binding-mruby/binding-util.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <mruby/data.h>
2929
#include <mruby/variable.h>
3030
#include <mruby/class.h>
31+
#include <mruby/string.h>
3132

3233
#include <stdio.h>
3334

@@ -352,11 +353,13 @@ inline mrb_value
352353
objectLoad(mrb_state *mrb, mrb_value self, const mrb_data_type &type)
353354
{
354355
RClass *klass = mrb_class_ptr(self);
355-
char *data;
356-
int data_len;
357-
mrb_get_args(mrb, "s", &data, &data_len);
358356

359-
C *c = C::deserialize(data, data_len);
357+
mrb_value data;
358+
mrb_get_args(mrb, "S", &data);
359+
360+
int data_len = mrb_string_value_len(mrb, data);
361+
362+
C *c = C::deserialize(RSTRING_PTR(data), data_len);
360363

361364
RData *obj = mrb_data_object_alloc(mrb, klass, c, &type);
362365
mrb_value obj_value = mrb_obj_value(obj);

0 commit comments

Comments
 (0)