diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/includes/hicn/util/array.h | 3 | ||||
-rw-r--r-- | lib/includes/hicn/util/set.h | 6 |
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; \ |