summaryrefslogtreecommitdiffstats
path: root/lib/includes
diff options
context:
space:
mode:
Diffstat (limited to 'lib/includes')
-rw-r--r--lib/includes/hicn/util/array.h3
-rw-r--r--lib/includes/hicn/util/set.h6
2 files changed, 6 insertions, 3 deletions
diff --git a/lib/includes/hicn/util/array.h b/lib/includes/hicn/util/array.h
index ab8852ed8..56cfcad8b 100644
--- a/lib/includes/hicn/util/array.h
+++ b/lib/includes/hicn/util/array.h
@@ -167,9 +167,10 @@ NAME ## _get(const NAME ## _t * array, const T search, T * element)
{ \
assert(element); \
for (unsigned i = 0; i < array->size; i++) \
- if (CMP(search, array->elements[i]) == 0) \
+ if (CMP(search, array->elements[i]) == 0) { \
*element = array->elements[i]; \
return 0; \
+ } \
/* Not found */ \
*element = NULL; \
return 0; \
diff --git a/lib/includes/hicn/util/set.h b/lib/includes/hicn/util/set.h
index c1f43918b..c7dd7bf09 100644
--- a/lib/includes/hicn/util/set.h
+++ b/lib/includes/hicn/util/set.h
@@ -138,10 +138,12 @@ NAME ## _free(NAME ## _t * set) \
int \
NAME ## _add(NAME ## _t * set, const T element) \
{ \
+ T * found = tfind(element, &set->root, (cmp_t)CMP); \
void * ptr = tsearch(element, &set->root, (cmp_t)CMP); \
if (!ptr) \
return -1; \
- set->size++; \
+ if (!found) \
+ set->size++; \
return 0; \
} \
\
@@ -214,7 +216,7 @@ int \
NAME ## _get_array(const NAME ## _t * set, T ** element) \
{ \
if (!element) \
- goto END; \
+ goto END; \
*element = malloc(set->size * sizeof(T)); \
if (!*element) \
return -1; \