pai
							
								
									0ef1134aa0
								
							
						
					
					
						commit
						ace2bd6357
					
				| @ -1,48 +1,44 @@ | |||||||
| #include <stdlib.h> | #include "platform.h" | ||||||
| #include <stdint.h> |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include <inttypes.h> |  | ||||||
| #include "debug.h" | #include "debug.h" | ||||||
| #include "stm32_assert.h" | #include "stm32_assert.h" | ||||||
| #include "malloc_safe.h" | #include "malloc_safe.h" | ||||||
| 
 | 
 | ||||||
| #if 1 | void *malloc_ck_do(size_t size,  const char *file, uint32_t line) | ||||||
| 
 |  | ||||||
| void *malloc_safe_do(size_t size, const char *file, uint32_t line) |  | ||||||
| { |  | ||||||
|     void *mem = malloc(size); |  | ||||||
|     if (mem == NULL) abort_msg("MALLOC FAILED", file, line); |  | ||||||
|     return mem; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void *calloc_safe_do(size_t nmemb, size_t size, const char *file, uint32_t line) |  | ||||||
| { | { | ||||||
|     void *mem = calloc(size, nmemb); |     void *mem = pvPortMalloc(size); | ||||||
|     if (mem == NULL) abort_msg("CALLOC FAILED", file, line); |     _malloc_trace(size, mem, file, line); | ||||||
|     return mem; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| void *malloc_ck_do(size_t size, bool *suc, const char *file, uint32_t line) |  | ||||||
| { |  | ||||||
|     void *mem = malloc(size); |  | ||||||
|     if (mem == NULL) { |     if (mem == NULL) { | ||||||
|         warn_msg("MALLOC FAILED", file, line); |         warn_msg("MALLOC FAILED", file, line); | ||||||
|         *suc = false; |  | ||||||
|         mem = NULL; |  | ||||||
|     } |     } | ||||||
|     return mem; |     return mem; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void *calloc_ck_do(size_t nmemb, size_t size, bool *suc, const char *file, uint32_t line) | void *calloc_ck_do(size_t nmemb, size_t size, const char *file, uint32_t line) | ||||||
| { | { | ||||||
|     void *mem = calloc(size, nmemb); |     void *mem = pvPortMalloc(size*nmemb); | ||||||
|  |     _malloc_trace(nmemb*size, mem, file, line); | ||||||
|     if (mem == NULL) { |     if (mem == NULL) { | ||||||
|         warn_msg("CALLOC FAILED", file, line); |         warn_msg("CALLOC FAILED", file, line); | ||||||
|         *suc = false; |  | ||||||
|         mem = NULL; |  | ||||||
|     } |     } | ||||||
|  |     memset(mem, 0, size*nmemb); | ||||||
|     return mem; |     return mem; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #endif | char *strdup_ck_do(const char *s, const char* file, uint32_t line) | ||||||
|  | { | ||||||
|  |     size_t len = strlen(s) + 1; | ||||||
|  |     void *new = malloc_ck_do(len, file, line); | ||||||
|  |     if (new == NULL) return NULL; | ||||||
|  |     return (char *) memcpy (new, s, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | char *strndup_ck_do(const char *s, uint32_t len, const char* file, uint32_t line) | ||||||
|  | { | ||||||
|  |     // TODO verify - this was not tested
 | ||||||
|  |     size_t alen = MIN(strlen(s) + 1, len); | ||||||
|  |     uint8_t *new = malloc_ck_do(alen, file, line); | ||||||
|  |     if (new == NULL) return NULL; | ||||||
|  |     memcpy (new, s, alen-1); | ||||||
|  |     new[alen-1] = '\0'; | ||||||
|  |     return (char *) new; | ||||||
|  | } | ||||||
|  | |||||||
					Carregando…
					
					
				
		Referência em uma nova issue