diff options
Diffstat (limited to 'src/libui_sdl/libui/windows/alloc.cpp')
-rw-r--r-- | src/libui_sdl/libui/windows/alloc.cpp | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/src/libui_sdl/libui/windows/alloc.cpp b/src/libui_sdl/libui/windows/alloc.cpp deleted file mode 100644 index cf6bd2e..0000000 --- a/src/libui_sdl/libui/windows/alloc.cpp +++ /dev/null @@ -1,64 +0,0 @@ -// 4 december 2014 -#include "uipriv_windows.hpp" - -typedef std::vector<uint8_t> byteArray; - -static std::map<uint8_t *, byteArray *> heap; -static std::map<byteArray *, const char *> types; - -void initAlloc(void) -{ - // do nothing -} - -void uninitAlloc(void) -{ - std::ostringstream oss; - std::string ossstr; // keep alive, just to be safe - - if (heap.size() == 0) - return; - for (const auto &alloc : heap) - // note the void * cast; otherwise it'll be treated as a string - oss << (void *) (alloc.first) << " " << types[alloc.second] << "\n"; - ossstr = oss.str(); - printf("data leak: %s\n", ossstr.c_str()); - userbug("Some data was leaked; either you left a uiControl lying around or there's a bug in libui itself. Leaked data:\n%s", ossstr.c_str()); -} - -#define rawBytes(pa) (&((*pa)[0])) - -void *uiAlloc(size_t size, const char *type) -{ - byteArray *out; - - out = new byteArray(size, 0); - heap[rawBytes(out)] = out; - types[out] = type; - return rawBytes(out); -} - -void *uiRealloc(void *_p, size_t size, const char *type) -{ - uint8_t *p = (uint8_t *) _p; - byteArray *arr; - - if (p == NULL) - return uiAlloc(size, type); - arr = heap[p]; - arr->resize(size, 0); - heap.erase(p); - heap[rawBytes(arr)] = arr; - return rawBytes(arr); -} - -void uiFree(void *_p) -{ - uint8_t *p = (uint8_t *) _p; - - if (p == NULL) - implbug("attempt to uiFree(NULL)"); - types.erase(heap[p]); - delete heap[p]; - heap.erase(p); -} |