nothings / stb

stb single-file public domain libraries for C/C++

Home Page:https://twitter.com/nothings

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

STBDS_FREE is used outside of STB_DS_IMPLEMENTATION causing custom implementation to be replaced by free().

guifes opened this issue · comments

Describe the bug
I've tried replacing STBDS_REALLOC and STBDS_FREE as instructed in the comments but I think I found a tiny bug. Since STBDS_FREE is used in stb_ds.h outside of the implementation code, it gets replaced by <stdlib.h> free instead of my custom replacement for the other source files that don't have STB_DS_IMPLEMENTATION defined.

To Reproduce
Steps to reproduce the behavior:

  1. Add stb_ds.h to a project overriding STBDS_FREE and STB_DS_IMPLEMENTATION in a source file
  2. On another source file, #include "stb_ds.h" and try to use arrfree in a context where it makes sense.
  3. Check the intermediary .i file and see that arrfree is gonna be replaced with an expression that contains <stdlib.h> free instead of your custom implementation.

Expected behavior
Since the point of redefining STBDS_REALLOC and STBDS_FREE is to have your custom allocation code be run always, there should be no exceptions such as this one.

Yes, looking at the code this does seem to be a bug.