From 80ba7082d4c045af8e9809a3117bc73be5f5570e Mon Sep 17 00:00:00 2001 From: Gregory Lirent Date: Tue, 16 Aug 2022 18:39:55 +0300 Subject: [PATCH] Minor fixes --- include/array.h | 2 +- include/extra/set.h | 5 ++--- src/__internal/rbtree.h | 6 +++--- src/__internal/vnode.h | 2 +- src/extra-memory.c | 3 +++ 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/array.h b/include/array.h index 9e7dee1..5b6d177 100644 --- a/include/array.h +++ b/include/array.h @@ -21,7 +21,7 @@ extern void array_reverse(vtype_array* x) Nonnull__(1); #define array_pop(x, value, data, callback) _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 1) #define array_find(x, value, data, callback) _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 0, 0) #define array_rfind(x, value, data, callback) _LIBCDSB_Generic(libcdsb_array, find, value)(x, value, data, callback, 1, 0) -#define list_countof(x, value) _LIBCDSB_Generic(libcdsb_array, count, value)(x, value) +#define array_countof(x, value) _LIBCDSB_Generic(libcdsb_array, count, value)(x, value) #define array_remove(x, value) array_pop(x, value, 0, 0) #define in_array(x, value) (array_find(x, value, 0, 0) == 0) diff --git a/include/extra/set.h b/include/extra/set.h index 0b25cdb..a34113b 100644 --- a/include/extra/set.h +++ b/include/extra/set.h @@ -8,9 +8,8 @@ #define vset_foreach(x, data, callback) libcdsb_vset_foreach(x, data, callback, 0) -extern bool libcdsb_vset_insert(vtype_set* x, const void* value, vtype type) LIBCDSB_nn12__; - +extern bool libcdsb_vset_insert(vtype_set* x, const void* value, vtype type) Nonnull__(1); extern int libcdsb_vset_find (vtype_set* x, const void* value, vtype type, void* data, vset_access_callback, bool cut) Nonnull__(1); -extern int libcdsb_vset_foreach(vtype_set* x, void* data, vset_access_callback, bool flush) LIBCDSB_nn13__; +extern int libcdsb_vset_foreach(vtype_set* x, void* data, vset_access_callback, bool flush) Nonnull__(1,3); #endif /* LIBCDSB_EXTRA_SET_H */ diff --git a/src/__internal/rbtree.h b/src/__internal/rbtree.h index c9db416..8564bc1 100644 --- a/src/__internal/rbtree.h +++ b/src/__internal/rbtree.h @@ -32,9 +32,9 @@ extern rbnode_t* libcdsb_rbtree_node_delete(rbnode_t** root, rbnode_t* node) extern void* libcdsb_rbtree_duplicate(const rbnode_t* s, void* (*node_duplicate)(void* src, void* parent, void* info), void* info) wur__ Nonnull__(1); extern int libcdsb_rbtree_compare (const rbnode_t* s0, const rbnode_t* s1, int (*node_compare)(const rbnode_t* s0, const rbnode_t* s1, void* info), void* info) pure__ wur__ Nonnull__(1,2); -extern hash_t libcdsb_rbtree_hash(const void* s, hash_t (*node_hash)(const void* s, void* info), void* info) pure__ wur__ Nonnull__(1,2); -extern size_t libcdsb_rbtree_size(const void* s) pure__ wur__ Nonnull__(1); -extern void libcdsb_rbtree_free(void* x, void (*node_free)(void* x, void* info), void* info) Nonnull__(1); +extern hash_t libcdsb_rbtree_hash(const void* s, hash_t (*node_hash)(const void* s, void* info), void* info) pure__ wur__ Nonnull__(1); +extern size_t libcdsb_rbtree_size(const void* s) pure__ wur__ Nonnull__(1); +extern void libcdsb_rbtree_free(void* x, void (*node_free)(void* x, void* info), void* info) Nonnull__(1); #define rbtree_duplicate libcdsb_rbtree_duplicate #define rbtree_compare libcdsb_rbtree_compare diff --git a/src/__internal/vnode.h b/src/__internal/vnode.h index c7a5d95..ad9a393 100644 --- a/src/__internal/vnode.h +++ b/src/__internal/vnode.h @@ -11,7 +11,7 @@ typedef union { void* ptr; bool b; str_t s; arr_t a; list_t l; - map_t m; set_t vs; + map_t m; set_t vs; dict_t vd; u8_t u8; u16_t u16; u32_t u32; u64_t u64; fl_t f; dbl_t d; ldbl_t ld; } var_t; diff --git a/src/extra-memory.c b/src/extra-memory.c index 72fdaab..0ff5783 100644 --- a/src/extra-memory.c +++ b/src/extra-memory.c @@ -55,6 +55,9 @@ char* libcdsb_strdup(const char* s) { void* x; size_t n; + if (is_null(s)) + return nullptr; + if ((x = malloc(n = strlen(s) + 1))) return memcpy(x, s, n); abort();