diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2019-01-26 22:33:23 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2019-01-26 22:33:23 +0900 |
| commit | a03e7214089d5c119ec157a6bdfe268b2e0dbf6d (patch) | |
| tree | 33c588ae4c99e648265347f9a2fe45a68b5b25e5 /include | |
| parent | 2f62178ddacfe360c04c7715fd4cfaacddefff6b (diff) | |
| parent | d6d02774c55e294adfebf619ee4ce8298249bb0c (diff) | |
| download | mruby-a03e7214089d5c119ec157a6bdfe268b2e0dbf6d.tar.gz mruby-a03e7214089d5c119ec157a6bdfe268b2e0dbf6d.zip | |
Merge pull request #4237 from dearblue/fix-memleak-Data_Wrap_Struct
Fix memory leak `sval` when out of memory in `Data_Wrap_Struct()`
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/data.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/mruby/data.h b/include/mruby/data.h index 31d6bd8fb..415684342 100644 --- a/include/mruby/data.h +++ b/include/mruby/data.h @@ -39,10 +39,11 @@ MRB_API struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass #define Data_Wrap_Struct(mrb,klass,type,ptr)\ mrb_data_object_alloc(mrb,klass,ptr,type) -#define Data_Make_Struct(mrb,klass,strct,type,sval,data) do { \ +#define Data_Make_Struct(mrb,klass,strct,type,sval,data_obj) do { \ + (data_obj) = Data_Wrap_Struct(mrb,klass,type,NULL);\ (sval) = mrb_malloc(mrb, sizeof(strct)); \ { static const strct zero = { 0 }; *(sval) = zero; };\ - (data) = Data_Wrap_Struct(mrb,klass,type,sval);\ + (data_obj)->data = (sval);\ } while (0) #define RDATA(obj) ((struct RData *)(mrb_ptr(obj))) |
