diff options
author | Nobuyoshi Nakada <[email protected]> | 2020-05-22 06:50:23 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2020-05-22 06:50:29 +0900 |
commit | 79d9528ddca1dfe2dd99287dc88fd7c2b30f7137 (patch) | |
tree | 5ca3c5052d6c045af9c1dc3041714a800a2cc5ce /compile.c | |
parent | 38a4f617de157586668dd726d518eadcebf1bca2 (diff) |
Fixed potential memory leak
Create a wrapper object first, then buffer allocation which can
fail.
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -9721,12 +9721,13 @@ static VALUE pinned_list_new(long size) { struct pinned_list * ptr; + VALUE obj_list = + TypedData_Make_Struct(0, struct pinned_list, &pinned_list_type, ptr); - ptr = xmalloc(sizeof(struct pinned_list)); - ptr->size = size; ptr->buffer = xcalloc(size, sizeof(VALUE)); + ptr->size = size; - return TypedData_Wrap_Struct(0, &pinned_list_type, ptr); + return obj_list; } static ibf_offset_t |