Skip to content

Commit 492beb1

Browse files
committed
ets: use has_key_at helper everywhere
Signed-off-by: Jakub Gonet <jakub.gonet@swmansion.com>
1 parent daaabc2 commit 492beb1

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

src/libAtomVM/ets.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ static EtsErrorCode insert_multiple(struct EtsTable *ets_table, term list, Conte
291291
while (term_is_nonempty_list(iter)) {
292292
term tuple = term_get_list_head(iter);
293293
iter = term_get_list_tail(iter);
294-
if (!term_is_tuple(tuple) || (size_t) term_get_tuple_arity(tuple) <= ets_table->key_index) {
294+
if (UNLIKELY(!term_is_tuple(tuple) || !has_key_at(tuple, ets_table->key_index))) {
295295
return EtsBadEntry;
296296
}
297297
++size;
@@ -391,13 +391,12 @@ EtsErrorCode ets_lookup_element_maybe_gc(term name_or_ref, term key, size_t key_
391391
}
392392

393393
term entry = ets_hashtable_lookup(ets_table->hashtable, key, ets_table->key_index, ctx->global);
394-
if (!term_is_tuple(entry)) {
394+
if (UNLIKELY(!term_is_tuple(entry))) {
395395
SMP_UNLOCK(ets_table);
396396
return EtsEntryNotFound;
397397
}
398398

399-
size_t arity = term_get_tuple_arity(entry);
400-
if (key_index >= arity) {
399+
if (UNLIKELY(!has_key_at(entry, key_index))) {
401400
SMP_UNLOCK(ets_table);
402401
return EtsBadPosition;
403402
}
@@ -540,9 +539,8 @@ EtsErrorCode ets_update_counter_maybe_gc(term ref, term key, term operation, ter
540539
SMP_UNLOCK(ets_table);
541540
return EtsBadEntry;
542541
}
543-
size_t arity = term_get_tuple_arity(to_insert);
544542
size_t elem_index = term_to_int(position_term) - 1;
545-
if (UNLIKELY(arity <= elem_index || elem_index == ets_table->key_index)) {
543+
if (UNLIKELY(!has_key_at(to_insert, elem_index) || elem_index == ets_table->key_index)) {
546544
SMP_UNLOCK(ets_table);
547545
return EtsBadEntry;
548546
}

0 commit comments

Comments
 (0)