We will deref ->files one beyond the allocated length due to the way
that C for(;;) loops work. So rework it a bit to make it more safe
and not look beyond the array. We didn't touch the memory before, but
it was still somewhat ugly.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
#define for_each_td(td, i) \
for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++)
#define for_each_file(td, f, i) \
- for ((i) = 0, (f) = (td)->files[0]; (i) < (td)->o.nr_files; (i)++, (f) = (td)->files[i])
+ for ((i) = 0, (f) = (td)->files[0]; \
+ (i) < (td)->o.nr_files && ((f) = (td)->files[i]) != NULL; \
+ (i)++)
#define fio_assert(td, cond) do { \
if (!(cond)) { \