Use previous chunk for growing allocation
When realloc in place fails, we alloc, copy memory, and only then dealloc (so that memory doesn't get overwritten before we copy it). But this may cause a false negative out of memory condition, for example:

This problem happens only when the previous chunk is free, and the user requested to grow his allocation, and the next free chunk is not enough to grow in place.
An easier solution to this problem instead of implementing logic for using the previous chunk, is to save the last usize of content in the reallocated chunk, deallocate it (which will allow it to consolidate with the previous chunk), then allocate a new region (which might or might not end up in the previous chunk), then when copying the data, copy all data except for the last usize from where the chunk previously was, and then copy the usize that we saved.
This is valid because when consolidating with the previous chunk, the only bytes that may be overwritten, are the last usize of the content.
This might not be worth implementing because this is a uncommon scenario, and it would add some extra checks which might hurt performance.