I'm systematically using NO_ALLOC in my calls to ocrDbCreate, but in a case
when I try to allocate a small block (16 bytes), it seems that
tlsf-allocator is used.
I was expecting malloc to be used instead.
My understanding is that when using custom allocators, one has to deal with
the fact that the allocators use a part of the allocated space. This
probably rules out allocating a really small buffer like this one. So I
don't want to use any custom allocator (at the moment).
Valgrind tells me this:
==8485== Invalid write of size 4
==8485== at 0x4047FA9: removeFreeBlock (tlsf-allocator.c:408)
==8485== by 0x404845C: tlsf_malloc (tlsf-allocator.c:881)
==8485== by 0x4048599: tlsfAllocate (tlsf-allocator.c:1011)
==8485== by 0x4048C81: regularCreate (regular.c:48)
==8485== by 0x4047B5E: ocrDbCreate (ocr-db.c:67)
tlsf-allocator.c:408 is this line (I have printfs here and there so the
line # may be off):
ST_SIZE(ADDR_OF(header_t, GET_ADDRESS(second), prevFreeBlock),