aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-01-31 17:48:56 +0100
committerLoïc Hoguin <[email protected]>2018-01-31 17:48:56 +0100
commit91ec77f04ac84ac9941336fe0f6eaf4bd42786cf (patch)
treedc169d23aee766a1ab522f07e7bb0c575c21d0af
parent6cb12f50fcbe091de56461100b5d527294405dd9 (diff)
downloadesdl2-91ec77f04ac84ac9941336fe0f6eaf4bd42786cf.tar.gz
esdl2-91ec77f04ac84ac9941336fe0f6eaf4bd42786cf.tar.bz2
esdl2-91ec77f04ac84ac9941336fe0f6eaf4bd42786cf.zip
Replace malloc/free with enif_alloc/enif_free
-rw-r--r--README.asciidoc4
-rw-r--r--c_src/esdl2_cursors.c4
-rw-r--r--c_src/esdl2_renderers.c4
-rw-r--r--c_src/esdl2_windows.c4
-rw-r--r--c_src/sdl_clipboard.c4
-rw-r--r--c_src/sdl_events.c4
-rw-r--r--c_src/sdl_keyboard.c8
-rw-r--r--c_src/sdl_video.c4
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';