From 8bd6650245d050e455cd4d26f6e59e7dd9b80392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Tue, 29 Mar 2016 11:47:23 +0200 Subject: array: allow arbitrarily sized array elements There exist two typical ways to use an array: 1) to hold pointers to externally allocated memory regions Use array_init(...) for initialization, an element has the size of a pointer. Use the functions suffixed with `_ptr' to manage your pointers. The cleanup function array_release_full must only be used with this type of array. 2) to hold arbitrary sized objects Use array_init_sized(...) to specify the size of a single element. Use the regular (i.e. without the `_ptr' suffix) functions to manage your objects. array_get will return a pointer to the object stored within the array. --- vis-motions.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'vis-motions.c') diff --git a/vis-motions.c b/vis-motions.c index 5bff026..3bb0b88 100644 --- a/vis-motions.c +++ b/vis-motions.c @@ -234,7 +234,7 @@ int vis_motion_register(Vis *vis, enum VisMotionType type, void *data, move->type = type; move->data = data; - if (array_add(&vis->motions, move)) + if (array_add_ptr(&vis->motions, move)) return VIS_MOVE_LAST + array_length(&vis->motions) - 1; free(move); return -1; @@ -322,7 +322,7 @@ bool vis_motion(Vis *vis, enum VisMotion motion, ...) { if (motion < LENGTH(vis_motions)) vis->action.movement = &vis_motions[motion]; else - vis->action.movement = array_get(&vis->motions, motion - VIS_MOVE_LAST); + vis->action.movement = array_get_ptr(&vis->motions, motion - VIS_MOVE_LAST); if (!vis->action.movement) goto err; -- cgit v1.2.3