SDL: Fixed mismatch between stdlib calloc() and SDL free()

From 845f3c74507db8c0c400bac005025c887bae2839 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 23 Aug 2023 14:48:44 -0700
Subject: [PATCH] Fixed mismatch between stdlib calloc() and SDL free()

Fixes https://github.com/libsdl-org/SDL/issues/8145
---
 src/hidapi/SDL_hidapi_libusb.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/hidapi/SDL_hidapi_libusb.h b/src/hidapi/SDL_hidapi_libusb.h
index 80ea0aff335d..456a4bf16c08 100644
--- a/src/hidapi/SDL_hidapi_libusb.h
+++ b/src/hidapi/SDL_hidapi_libusb.h
@@ -23,6 +23,7 @@
 
 /* #pragma push_macro/pop_macro works correctly only as of gcc >= 4.4.3
    clang-3.0 _seems_ to be OK. */
+#pragma push_macro("calloc")
 #pragma push_macro("malloc")
 #pragma push_macro("realloc")
 #pragma push_macro("free")
@@ -38,6 +39,7 @@
 #pragma push_macro("tolower")
 #pragma push_macro("wcsdup")
 
+#undef calloc
 #undef malloc
 #undef realloc
 #undef free
@@ -53,6 +55,7 @@
 #undef tolower
 #undef wcsdup
 
+#define calloc          SDL_calloc
 #define malloc          SDL_malloc
 #define realloc         SDL_realloc
 #define free            SDL_free
@@ -106,6 +109,7 @@ static int SDL_libusb_get_string_descriptor(libusb_device_handle *dev,
 #undef ICONV_CONST
 #undef UNDEF_ICONV_CONST
 #endif
+#pragma pop_macro("calloc")
 #pragma pop_macro("malloc")
 #pragma pop_macro("realloc")
 #pragma pop_macro("free")