mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2026-01-30 01:48:15 +03:00
Replace all free calls with VVV_free[func]
This replaces all calls to SDL_free with a new macro, VVV_free, that nulls the pointer afterwards. This mitigates any use-after-frees and also completely eliminates double-frees. The same is done for any function to free specific objects such as SDL_FreeSurface, with the VVV_freefunc macro. No exceptions for any of these calls, even if the pointer is discarded or zeroed afterwards anyway. Better safe than sorry. This is a macro rather than a function that takes in a pointer-to-pointer because such a function would have type issues that require casting and that's just not safe. Even though SDL_free and other SDL functions already check for NULL, the macro has a NULL check for other functions that don't. For example, FAudioVoice_DestroyVoice does not check for NULL. FILESYSTEM_freeMemory has been axed in favor of VVV_free because it functionally does the same thing except for `unsigned char*` only.
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
* - vformat_cb Calls a user-supplied callback function for each part of
|
||||
* the resulting string.
|
||||
* - vformat_buf Fills a user-supplied buffer with the result.
|
||||
* - vformat_alloc Allocates a buffer with the result (caller must SDL_free).
|
||||
* - vformat_alloc Allocates a buffer with the result (caller must VVV_free).
|
||||
*
|
||||
* All include the following parameters:
|
||||
* - format_string The string which needs placeholders to be filled in
|
||||
|
||||
Reference in New Issue
Block a user