|  | 
| 5 | 5 | 
 | 
| 6 | 6 | #include <stdlib.h> | 
| 7 | 7 | #include "umm_malloc/umm_malloc.h" | 
|  | 8 | +extern "C" size_t umm_umul_sat(const size_t a, const size_t b);; | 
| 8 | 9 | 
 | 
| 9 | 10 | // Need FORCE_ALWAYS_INLINE to put HeapSelect class constructor/deconstructor in IRAM | 
| 10 | 11 | #define FORCE_ALWAYS_INLINE_HEAP_SELECT | 
| @@ -153,7 +154,7 @@ void* _calloc_r(struct _reent* unused, size_t count, size_t size) | 
| 153 | 154 | { | 
| 154 | 155 |     (void) unused; | 
| 155 | 156 |     void *ret = calloc(count, size); | 
| 156 |  | -    PTR_CHECK__LOG_LAST_FAIL(ret, count * size); | 
|  | 157 | +    PTR_CHECK__LOG_LAST_FAIL(ret, umm_umul_sat(count, size)); | 
| 157 | 158 |     return ret; | 
| 158 | 159 | } | 
| 159 | 160 | 
 | 
| @@ -247,8 +248,11 @@ void* IRAM_ATTR calloc(size_t count, size_t size) | 
| 247 | 248 |     INTEGRITY_CHECK__ABORT(); | 
| 248 | 249 |     POISON_CHECK__ABORT(); | 
| 249 | 250 |     void* ret = UMM_CALLOC(count, size); | 
| 250 |  | -    PTR_CHECK__LOG_LAST_FAIL(ret, count * size); | 
| 251 |  | -    OOM_CHECK__PRINT_OOM(ret, size); | 
|  | 251 | +    #if defined(DEBUG_ESP_OOM) | 
|  | 252 | +    size_t total_size = umm_umul_sat(count, size);// For logging purposes | 
|  | 253 | +    #endif | 
|  | 254 | +    PTR_CHECK__LOG_LAST_FAIL(ret, total_size); | 
|  | 255 | +    OOM_CHECK__PRINT_OOM(ret, total_size); | 
| 252 | 256 |     return ret; | 
| 253 | 257 | } | 
| 254 | 258 | 
 | 
| @@ -287,8 +291,11 @@ void* IRAM_ATTR heap_pvPortCalloc(size_t count, size_t size, const char* file, i | 
| 287 | 291 |     INTEGRITY_CHECK__PANIC_FL(file, line); | 
| 288 | 292 |     POISON_CHECK__PANIC_FL(file, line); | 
| 289 | 293 |     void* ret = UMM_CALLOC(count, size); | 
| 290 |  | -    PTR_CHECK__LOG_LAST_FAIL_FL(ret, count * size, file, line); | 
| 291 |  | -    OOM_CHECK__PRINT_LOC(ret, size, file, line); | 
|  | 294 | +    #if defined(DEBUG_ESP_OOM) | 
|  | 295 | +    size_t total_size = umm_umul_sat(count, size); | 
|  | 296 | +    #endif | 
|  | 297 | +    PTR_CHECK__LOG_LAST_FAIL_FL(ret, total_size, file, line); | 
|  | 298 | +    OOM_CHECK__PRINT_LOC(ret, total_size, file, line); | 
| 292 | 299 |     return ret; | 
| 293 | 300 | } | 
| 294 | 301 | 
 | 
|  | 
0 commit comments