diff --git a/libraries/timidity/common.cpp b/libraries/timidity/common.cpp index 6e77611a3..f58b53543 100644 --- a/libraries/timidity/common.cpp +++ b/libraries/timidity/common.cpp @@ -34,6 +34,7 @@ namespace Timidity /* This'll allocate memory or die. */ void *safe_malloc(size_t count) { +#if 0 char buffer[80]; void *p; if (count > (1 << 21)) @@ -51,6 +52,15 @@ void *safe_malloc(size_t count) throw std::runtime_error(buffer); } return 0; // Unreachable. +#else + // No, we cannot throw exceptions here - this code can get called from real-time worker threads. + auto p = malloc(count); + if (!p) + { + std::terminate(); // we must abort, though... + } + return p; +#endif } diff --git a/libraries/timidityplus/common.cpp b/libraries/timidityplus/common.cpp index ce275c16b..053a57f0c 100644 --- a/libraries/timidityplus/common.cpp +++ b/libraries/timidityplus/common.cpp @@ -39,7 +39,7 @@ void *safe_malloc(size_t count) auto p = malloc(count); if (p == nullptr) { - // I_FatalError("Out of memory"); + abort(); } return p; } @@ -54,7 +54,7 @@ void *safe_realloc(void *ptr, size_t count) auto p = realloc(ptr, count); if (p == nullptr) { - // I_FatalError("Out of memory"); + abort(); } return p; } @@ -65,7 +65,7 @@ char *safe_strdup(const char *s) auto p = strdup(s); if (p == nullptr) { - // I_FatalError("Out of memory"); + abort(); } return p; }