If you manage the memory yourself, for example, you allocate the hoedown_buffer struct on the stack, then hoedown_buffer_free will take a pointer of the stack and try to free it. Consider this example:

```c
hoedown_buffer buffer;
hoedown_buffer_init(&buffer, 512, realloc, free);
// do something with the buffer
hoedown_buffer_free_data(&buffer);
```

with hoedown_buffer_free it would call free on &buffer