mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-03 02:20:57 +02:00
fix(heap): Fixes Coverity false positive in va_list initialization
This commit is contained in:
committed by
BOT
parent
ca2ccf164c
commit
1ca82baec3
@@ -171,22 +171,27 @@ HEAP_IRAM_ATTR void *heap_caps_realloc_default( void *ptr, size_t size )
|
|||||||
*/
|
*/
|
||||||
HEAP_IRAM_ATTR void *heap_caps_malloc_prefer( size_t size, size_t num, ... )
|
HEAP_IRAM_ATTR void *heap_caps_malloc_prefer( size_t size, size_t num, ... )
|
||||||
{
|
{
|
||||||
va_list argp;
|
|
||||||
va_start( argp, num );
|
|
||||||
void *r = NULL;
|
void *r = NULL;
|
||||||
uint32_t caps = MALLOC_CAP_DEFAULT;
|
uint32_t caps = MALLOC_CAP_DEFAULT;
|
||||||
while (num--) {
|
|
||||||
caps = va_arg( argp, uint32_t );
|
if (num > 0) {
|
||||||
r = heap_caps_malloc_base( size, caps );
|
va_list argp = {0};
|
||||||
|
va_start(argp, num);
|
||||||
|
|
||||||
|
for ( ; num > 0; --num) {
|
||||||
|
caps = va_arg(argp, uint32_t);
|
||||||
|
r = heap_caps_malloc_base(size, caps);
|
||||||
if (r != NULL || size == 0) {
|
if (r != NULL || size == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r == NULL && size > 0){
|
va_end( argp );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r == NULL && size > 0) {
|
||||||
heap_caps_alloc_failed(size, caps, __func__);
|
heap_caps_alloc_failed(size, caps, __func__);
|
||||||
}
|
}
|
||||||
va_end( argp );
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,46 +200,58 @@ HEAP_IRAM_ATTR void *heap_caps_malloc_prefer( size_t size, size_t num, ... )
|
|||||||
*/
|
*/
|
||||||
HEAP_IRAM_ATTR void *heap_caps_realloc_prefer( void *ptr, size_t size, size_t num, ... )
|
HEAP_IRAM_ATTR void *heap_caps_realloc_prefer( void *ptr, size_t size, size_t num, ... )
|
||||||
{
|
{
|
||||||
va_list argp;
|
|
||||||
va_start( argp, num );
|
|
||||||
void *r = NULL;
|
void *r = NULL;
|
||||||
uint32_t caps = MALLOC_CAP_DEFAULT;
|
uint32_t caps = MALLOC_CAP_DEFAULT;
|
||||||
while (num--) {
|
|
||||||
caps = va_arg( argp, uint32_t );
|
if (num > 0) {
|
||||||
r = heap_caps_realloc_base( ptr, size, caps );
|
va_list argp = {0};
|
||||||
|
va_start(argp, num);
|
||||||
|
|
||||||
|
for ( ; num > 0; --num) {
|
||||||
|
caps = va_arg(argp, uint32_t);
|
||||||
|
r = heap_caps_realloc_base(ptr, size, caps);
|
||||||
if (r != NULL || size == 0) {
|
if (r != NULL || size == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r == NULL && size > 0){
|
va_end( argp );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r == NULL && size > 0) {
|
||||||
heap_caps_alloc_failed(size, caps, __func__);
|
heap_caps_alloc_failed(size, caps, __func__);
|
||||||
}
|
}
|
||||||
va_end( argp );
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Memory callocation as preference in decreasing order.
|
Memory callocation as preference in decreasing order.
|
||||||
*/
|
*/
|
||||||
HEAP_IRAM_ATTR void *heap_caps_calloc_prefer( size_t n, size_t size, size_t num, ... )
|
HEAP_IRAM_ATTR void *heap_caps_calloc_prefer(size_t n, size_t size, size_t num, ...)
|
||||||
{
|
{
|
||||||
va_list argp;
|
|
||||||
va_start( argp, num );
|
|
||||||
void *r = NULL;
|
void *r = NULL;
|
||||||
uint32_t caps = MALLOC_CAP_DEFAULT;
|
uint32_t caps = MALLOC_CAP_DEFAULT;
|
||||||
while (num--) {
|
|
||||||
caps = va_arg( argp, uint32_t );
|
if (num > 0) {
|
||||||
r = heap_caps_calloc_base( n, size, caps );
|
va_list argp = {0};
|
||||||
if (r != NULL || size == 0){
|
va_start(argp, num);
|
||||||
|
|
||||||
|
for (; num > 0; --num) {
|
||||||
|
caps = va_arg(argp, uint32_t);
|
||||||
|
r = heap_caps_calloc_base(n, size, caps);
|
||||||
|
if (r != NULL || size == 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r == NULL && size > 0){
|
va_end(argp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (r == NULL && size > 0) {
|
||||||
heap_caps_alloc_failed(size, caps, __func__);
|
heap_caps_alloc_failed(size, caps, __func__);
|
||||||
}
|
}
|
||||||
va_end( argp );
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user