katef / libfsm

DFA regular expression library & friends
BSD 2-Clause "Simplified" License
931 stars 52 forks source link

In `closure_free()`, use the FSM allocator instead of `free()`. #489

Closed sw17ch closed 1 month ago

sw17ch commented 1 month ago

closure_free() should use the free implementation provided by the FSM's allocator.

While attempting to make bindings to the libfsm API for a Rust project, I came across a case where my allocator was giving me the same pointer twice. I added instrumentation that places guard regions on either side of the allocation, and with this, I was able to observe closure_free() attempting to free the internal pointer between the guards rather than the pointer to the start of the allocation.

With this change in place, I was able to run my test program to completion.

katef commented 1 month ago

Thanks!