From 91ec77f04ac84ac9941336fe0f6eaf4bd42786cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Wed, 31 Jan 2018 17:48:56 +0100 Subject: Replace malloc/free with enif_alloc/enif_free --- README.asciidoc | 4 +--- c_src/esdl2_cursors.c | 4 ++-- c_src/esdl2_renderers.c | 4 ++-- c_src/esdl2_windows.c | 4 ++-- c_src/sdl_clipboard.c | 4 ++-- c_src/sdl_events.c | 4 ++-- c_src/sdl_keyboard.c | 8 ++++---- c_src/sdl_video.c | 4 ++-- 8 files changed, 17 insertions(+), 19 deletions(-) diff --git a/README.asciidoc b/README.asciidoc index 9a91b4f..fdc4c10 100644 --- a/README.asciidoc +++ b/README.asciidoc @@ -83,13 +83,11 @@ corresponding to the public headers. * 'SDL_version.h': `SDL_GetRevisionNumber` must be implemented. The macros may also be useful. * 'SDL_video.h': The following elements are missing: ** `SDL_WINDOWPOS_*` values for different displays -** We currently do not support UTF-8. We should probably switch to binaries as input/output to support it for `SDL_SetWindowTitle` and `SDL_GetWindowTitle` +** We currently do not support UTF-8. We should probably switch to binaries as input/output to support it for `SDL_SetWindowTitle`, `SDL_GetWindowTitle` and `SDL_CreateWindow`. ** `SDL_GetWindowSurface` (window) ** `SDL_UpdateWindowSurface` (window) ** `SDL_UpdateWindowSurfaceRects` (window) -The code sometimes uses `malloc`. Use `enif_alloc` everywhere instead. - == To be implemented * 'SDL_audio.h' diff --git a/c_src/esdl2_cursors.c b/c_src/esdl2_cursors.c index 569a787..b056c08 100644 --- a/c_src/esdl2_cursors.c +++ b/c_src/esdl2_cursors.c @@ -33,7 +33,7 @@ void esdl2_cursors_insert(SDL_Cursor* cursor, obj_Cursor* res) { struct esdl2_cursor* item; - item = malloc(sizeof(struct esdl2_cursor)); + item = enif_alloc(sizeof(struct esdl2_cursor)); item->cursor = cursor; item->res = res; @@ -89,7 +89,7 @@ void esdl2_cursors_free() head = LIST_FIRST(&cursors); while (head != NULL) { next = LIST_NEXT(head, entries); - free(head); + enif_free(head); head = next; } } diff --git a/c_src/esdl2_renderers.c b/c_src/esdl2_renderers.c index b6aa6a4..ee95c4a 100644 --- a/c_src/esdl2_renderers.c +++ b/c_src/esdl2_renderers.c @@ -34,7 +34,7 @@ void esdl2_renderers_insert(SDL_Renderer* renderer, obj_Renderer* res, obj_Windo { struct esdl2_renderer* item; - item = malloc(sizeof(struct esdl2_renderer)); + item = enif_alloc(sizeof(struct esdl2_renderer)); item->renderer = renderer; item->res = res; item->window_res = window_res; @@ -95,7 +95,7 @@ void esdl2_renderers_free() head = LIST_FIRST(&renderers); while (head != NULL) { next = LIST_NEXT(head, entries); - free(head); + enif_free(head); head = next; } } diff --git a/c_src/esdl2_windows.c b/c_src/esdl2_windows.c index be5a95e..4f13235 100644 --- a/c_src/esdl2_windows.c +++ b/c_src/esdl2_windows.c @@ -33,7 +33,7 @@ void esdl2_windows_insert(SDL_Window* window, obj_Window* res) { struct esdl2_window* item; - item = malloc(sizeof(struct esdl2_window)); + item = enif_alloc(sizeof(struct esdl2_window)); item->window = window; item->res = res; @@ -89,7 +89,7 @@ void esdl2_windows_free() head = LIST_FIRST(&windows); while (head != NULL) { next = LIST_NEXT(head, entries); - free(head); + enif_free(head); head = next; } } diff --git a/c_src/sdl_clipboard.c b/c_src/sdl_clipboard.c index 2d776a9..33731a7 100644 --- a/c_src/sdl_clipboard.c +++ b/c_src/sdl_clipboard.c @@ -57,13 +57,13 @@ NIF_FUNCTION(set_clipboard_text) BADARG_IF(!enif_inspect_binary(env, argv[0], &bin)); - text = malloc(bin.size + 1); + text = enif_alloc(bin.size + 1); memcpy(text, bin.data, bin.size); text[bin.size] = '\0'; ret = SDL_SetClipboardText(text); - free(text); + enif_free(text); if (ret != 0) return sdl_error_tuple(env); diff --git a/c_src/sdl_events.c b/c_src/sdl_events.c index 653d5e1..dec675c 100644 --- a/c_src/sdl_events.c +++ b/c_src/sdl_events.c @@ -340,7 +340,7 @@ NIF_CALL_HANDLER(thread_peep_events) int i, numEvents; ERL_NIF_TERM list; - events = malloc(sizeof(SDL_Event) * (long)args[1]); + events = enif_alloc(sizeof(SDL_Event) * (long)args[1]); numEvents = SDL_PeepEvents(events, (long)args[1], (long)args[0], (long)args[2], (long)args[3]); @@ -353,7 +353,7 @@ NIF_CALL_HANDLER(thread_peep_events) for (i = 0; i < numEvents; i++) list = enif_make_list_cell(env, event_to_map(env, &events[i]), list); - free(events); + enif_free(events); return enif_make_tuple2(env, atom_ok, list); } diff --git a/c_src/sdl_keyboard.c b/c_src/sdl_keyboard.c index 5c402d4..d4b4233 100644 --- a/c_src/sdl_keyboard.c +++ b/c_src/sdl_keyboard.c @@ -24,13 +24,13 @@ NIF_FUNCTION(get_key_from_name) BADARG_IF(!enif_inspect_binary(env, argv[0], &bin)); - name = malloc(bin.size + 1); + name = enif_alloc(bin.size + 1); memcpy(name, bin.data, bin.size); name[bin.size] = '\0'; key = SDL_GetKeyFromName(name); - free(name); + enif_free(name); if (key == SDLK_UNKNOWN) return atom_undefined; @@ -110,13 +110,13 @@ NIF_FUNCTION(get_scancode_from_name) BADARG_IF(!enif_inspect_binary(env, argv[0], &bin)); - name = malloc(bin.size + 1); + name = enif_alloc(bin.size + 1); memcpy(name, bin.data, bin.size); name[bin.size] = '\0'; scancode = SDL_GetScancodeFromName(name); - free(name); + enif_free(name); if (scancode == SDL_SCANCODE_UNKNOWN) return atom_undefined; diff --git a/c_src/sdl_video.c b/c_src/sdl_video.c index e16c7d2..f14304b 100644 --- a/c_src/sdl_video.c +++ b/c_src/sdl_video.c @@ -370,7 +370,7 @@ NIF_CALL_HANDLER(thread_video_init) result = SDL_VideoInit(args[0]); - free(args[0]); + enif_free(args[0]); if (result) return sdl_error_tuple(env); @@ -385,7 +385,7 @@ NIF_FUNCTION(video_init) BADARG_IF(!enif_inspect_binary(env, argv[0], &bin)); - name = malloc(bin.size + 1); + name = enif_alloc(bin.size + 1); memcpy(name, bin.data, bin.size); name[bin.size] = '\0'; -- cgit v1.2.3