@@ -291,7 +291,7 @@ static EtsErrorCode insert_multiple(struct EtsTable *ets_table, term list, Conte
291
291
while (term_is_nonempty_list (iter )) {
292
292
term tuple = term_get_list_head (iter );
293
293
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 )) ) {
295
295
return EtsBadEntry ;
296
296
}
297
297
++ size ;
@@ -391,13 +391,12 @@ EtsErrorCode ets_lookup_element_maybe_gc(term name_or_ref, term key, size_t key_
391
391
}
392
392
393
393
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 ) )) {
395
395
SMP_UNLOCK (ets_table );
396
396
return EtsEntryNotFound ;
397
397
}
398
398
399
- size_t arity = term_get_tuple_arity (entry );
400
- if (key_index >= arity ) {
399
+ if (UNLIKELY (!has_key_at (entry , key_index ))) {
401
400
SMP_UNLOCK (ets_table );
402
401
return EtsBadPosition ;
403
402
}
@@ -540,9 +539,8 @@ EtsErrorCode ets_update_counter_maybe_gc(term ref, term key, term operation, ter
540
539
SMP_UNLOCK (ets_table );
541
540
return EtsBadEntry ;
542
541
}
543
- size_t arity = term_get_tuple_arity (to_insert );
544
542
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 )) {
546
544
SMP_UNLOCK (ets_table );
547
545
return EtsBadEntry ;
548
546
}
0 commit comments