void *
array_idx_modifiable_i(const struct array *array, unsigned int idx)
{
- i_assert(idx * array->element_size < array->buffer->used);
+ i_assert(idx < array->buffer->used / array->element_size);
return PTR_OFFSET(array->buffer->data, idx * array->element_size);
}
static inline const void * ATTR_PURE
array_idx_i(const struct array *array, unsigned int idx)
{
- i_assert(idx * array->element_size < array->buffer->used);
+ i_assert(idx < array->buffer->used / array->element_size);
return CONST_PTR_OFFSET(array->buffer->data, idx * array->element_size);
}
#define array_idx(array, idx) \
test_begin("fatal_array");
t_array_init(&ad, 3);
/* allocation big enough, but memory not initialised */
- test_expect_fatal_string("(array_idx_i): assertion failed: (idx * array->element_size < array->buffer->used)");
+ test_expect_fatal_string("(array_idx_i): assertion failed: (idx < array->buffer->used / array->element_size)");
useless_ptr = array_idx(&ad, 0);
return FATAL_TEST_FAILURE;
}
t_array_init(&ad, 2);
array_append(&ad, tmpd, 2);
/* actual out of range address requested */
- test_expect_fatal_string("(array_idx_i): assertion failed: (idx * array->element_size < array->buffer->used)");
+ test_expect_fatal_string("(array_idx_i): assertion failed: (idx < array->buffer->used / array->element_size)");
useless_ptr = array_idx(&ad, 2);
return FATAL_TEST_FAILURE;
}