mirror of
https://github.com/postgres/postgres.git
synced 2025-07-11 10:01:57 +03:00
Add missing va_end() calls
found by Coverity
This commit is contained in:
@ -229,6 +229,7 @@ get_char_item(int lineno, void *var, enum ECPGttype vartype, char *value, int va
|
|||||||
|
|
||||||
#define RETURN_IF_NO_DATA if (ntuples < 1) \
|
#define RETURN_IF_NO_DATA if (ntuples < 1) \
|
||||||
{ \
|
{ \
|
||||||
|
va_end(args); \
|
||||||
ecpg_raise(lineno, ECPG_NOT_FOUND, ECPG_SQLSTATE_NO_DATA, NULL); \
|
ecpg_raise(lineno, ECPG_NOT_FOUND, ECPG_SQLSTATE_NO_DATA, NULL); \
|
||||||
return (false); \
|
return (false); \
|
||||||
}
|
}
|
||||||
@ -248,13 +249,17 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
ecpg_init_sqlca(sqlca);
|
ecpg_init_sqlca(sqlca);
|
||||||
ECPGresult = ecpg_result_by_descriptor(lineno, desc_name);
|
ECPGresult = ecpg_result_by_descriptor(lineno, desc_name);
|
||||||
if (!ECPGresult)
|
if (!ECPGresult)
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ntuples = PQntuples(ECPGresult);
|
ntuples = PQntuples(ECPGresult);
|
||||||
|
|
||||||
if (index < 1 || index > PQnfields(ECPGresult))
|
if (index < 1 || index > PQnfields(ECPGresult))
|
||||||
{
|
{
|
||||||
ecpg_raise(lineno, ECPG_INVALID_DESCRIPTOR_INDEX, ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX, NULL);
|
ecpg_raise(lineno, ECPG_INVALID_DESCRIPTOR_INDEX, ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX, NULL);
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,68 +317,98 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
|
|
||||||
case ECPGd_name:
|
case ECPGd_name:
|
||||||
if (!get_char_item(lineno, var, vartype, PQfname(ECPGresult, index), varcharsize))
|
if (!get_char_item(lineno, var, vartype, PQfname(ECPGresult, index), varcharsize))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: NAME = %s\n", PQfname(ECPGresult, index));
|
ecpg_log("ECPGget_desc: NAME = %s\n", PQfname(ECPGresult, index));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_nullable:
|
case ECPGd_nullable:
|
||||||
if (!get_int_item(lineno, var, vartype, 1))
|
if (!get_int_item(lineno, var, vartype, 1))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_key_member:
|
case ECPGd_key_member:
|
||||||
if (!get_int_item(lineno, var, vartype, 0))
|
if (!get_int_item(lineno, var, vartype, 0))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_scale:
|
case ECPGd_scale:
|
||||||
if (!get_int_item(lineno, var, vartype, (PQfmod(ECPGresult, index) - VARHDRSZ) & 0xffff))
|
if (!get_int_item(lineno, var, vartype, (PQfmod(ECPGresult, index) - VARHDRSZ) & 0xffff))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: SCALE = %d\n", (PQfmod(ECPGresult, index) - VARHDRSZ) & 0xffff);
|
ecpg_log("ECPGget_desc: SCALE = %d\n", (PQfmod(ECPGresult, index) - VARHDRSZ) & 0xffff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_precision:
|
case ECPGd_precision:
|
||||||
if (!get_int_item(lineno, var, vartype, PQfmod(ECPGresult, index) >> 16))
|
if (!get_int_item(lineno, var, vartype, PQfmod(ECPGresult, index) >> 16))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: PRECISION = %d\n", PQfmod(ECPGresult, index) >> 16);
|
ecpg_log("ECPGget_desc: PRECISION = %d\n", PQfmod(ECPGresult, index) >> 16);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_octet:
|
case ECPGd_octet:
|
||||||
if (!get_int_item(lineno, var, vartype, PQfsize(ECPGresult, index)))
|
if (!get_int_item(lineno, var, vartype, PQfsize(ECPGresult, index)))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: OCTET_LENGTH = %d\n", PQfsize(ECPGresult, index));
|
ecpg_log("ECPGget_desc: OCTET_LENGTH = %d\n", PQfsize(ECPGresult, index));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_length:
|
case ECPGd_length:
|
||||||
if (!get_int_item(lineno, var, vartype, PQfmod(ECPGresult, index) - VARHDRSZ))
|
if (!get_int_item(lineno, var, vartype, PQfmod(ECPGresult, index) - VARHDRSZ))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: LENGTH = %d\n", PQfmod(ECPGresult, index) - VARHDRSZ);
|
ecpg_log("ECPGget_desc: LENGTH = %d\n", PQfmod(ECPGresult, index) - VARHDRSZ);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_type:
|
case ECPGd_type:
|
||||||
if (!get_int_item(lineno, var, vartype, ecpg_dynamic_type(PQftype(ECPGresult, index))))
|
if (!get_int_item(lineno, var, vartype, ecpg_dynamic_type(PQftype(ECPGresult, index))))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: TYPE = %d\n", ecpg_dynamic_type(PQftype(ECPGresult, index)));
|
ecpg_log("ECPGget_desc: TYPE = %d\n", ecpg_dynamic_type(PQftype(ECPGresult, index)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_di_code:
|
case ECPGd_di_code:
|
||||||
if (!get_int_item(lineno, var, vartype, ecpg_dynamic_type_DDT(PQftype(ECPGresult, index))))
|
if (!get_int_item(lineno, var, vartype, ecpg_dynamic_type_DDT(PQftype(ECPGresult, index))))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: TYPE = %d\n", ecpg_dynamic_type_DDT(PQftype(ECPGresult, index)));
|
ecpg_log("ECPGget_desc: TYPE = %d\n", ecpg_dynamic_type_DDT(PQftype(ECPGresult, index)));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ECPGd_cardinality:
|
case ECPGd_cardinality:
|
||||||
if (!get_int_item(lineno, var, vartype, PQntuples(ECPGresult)))
|
if (!get_int_item(lineno, var, vartype, PQntuples(ECPGresult)))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
ecpg_log("ECPGget_desc: CARDINALITY = %d\n", PQntuples(ECPGresult));
|
ecpg_log("ECPGget_desc: CARDINALITY = %d\n", PQntuples(ECPGresult));
|
||||||
break;
|
break;
|
||||||
@ -391,6 +426,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
ecpg_log("ECPGget_desc on line %d: incorrect number of matches; %d don't fit into array of %ld\n",
|
ecpg_log("ECPGget_desc on line %d: incorrect number of matches; %d don't fit into array of %ld\n",
|
||||||
lineno, ntuples, arrsize);
|
lineno, ntuples, arrsize);
|
||||||
ecpg_raise(lineno, ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
ecpg_raise(lineno, ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/* allocate storage if needed */
|
/* allocate storage if needed */
|
||||||
@ -399,7 +435,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
void *mem = (void *) ecpg_alloc(offset * ntuples, lineno);
|
void *mem = (void *) ecpg_alloc(offset * ntuples, lineno);
|
||||||
|
|
||||||
if (!mem)
|
if (!mem)
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
*(void **) var = mem;
|
*(void **) var = mem;
|
||||||
ecpg_add_mem(mem, lineno);
|
ecpg_add_mem(mem, lineno);
|
||||||
var = mem;
|
var = mem;
|
||||||
@ -408,7 +447,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
|
for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
|
||||||
{
|
{
|
||||||
if (!get_int_item(lineno, var, vartype, PQgetlength(ECPGresult, act_tuple, index)))
|
if (!get_int_item(lineno, var, vartype, PQgetlength(ECPGresult, act_tuple, index)))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
var = (char *) var + offset;
|
var = (char *) var + offset;
|
||||||
ecpg_log("ECPGget_desc: RETURNED[%d] = %d\n", act_tuple, PQgetlength(ECPGresult, act_tuple, index));
|
ecpg_log("ECPGget_desc: RETURNED[%d] = %d\n", act_tuple, PQgetlength(ECPGresult, act_tuple, index));
|
||||||
}
|
}
|
||||||
@ -417,6 +459,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
default:
|
default:
|
||||||
snprintf(type_str, sizeof(type_str), "%d", type);
|
snprintf(type_str, sizeof(type_str), "%d", type);
|
||||||
ecpg_raise(lineno, ECPG_UNKNOWN_DESCRIPTOR_ITEM, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, type_str);
|
ecpg_raise(lineno, ECPG_UNKNOWN_DESCRIPTOR_ITEM, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, type_str);
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -460,6 +503,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
ecpg_log("ECPGget_desc on line %d: incorrect number of matches (indicator); %d don't fit into array of %ld\n",
|
ecpg_log("ECPGget_desc on line %d: incorrect number of matches (indicator); %d don't fit into array of %ld\n",
|
||||||
lineno, ntuples, data_var.ind_arrsize);
|
lineno, ntuples, data_var.ind_arrsize);
|
||||||
ecpg_raise(lineno, ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
ecpg_raise(lineno, ECPG_TOO_MANY_MATCHES, ECPG_SQLSTATE_CARDINALITY_VIOLATION, NULL);
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -469,7 +513,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
void *mem = (void *) ecpg_alloc(data_var.ind_offset * ntuples, lineno);
|
void *mem = (void *) ecpg_alloc(data_var.ind_offset * ntuples, lineno);
|
||||||
|
|
||||||
if (!mem)
|
if (!mem)
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
*(void **) data_var.ind_pointer = mem;
|
*(void **) data_var.ind_pointer = mem;
|
||||||
ecpg_add_mem(mem, lineno);
|
ecpg_add_mem(mem, lineno);
|
||||||
data_var.ind_value = mem;
|
data_var.ind_value = mem;
|
||||||
@ -478,12 +525,16 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
|
for (act_tuple = 0; act_tuple < ntuples; act_tuple++)
|
||||||
{
|
{
|
||||||
if (!get_int_item(lineno, data_var.ind_value, data_var.ind_type, -PQgetisnull(ECPGresult, act_tuple, index)))
|
if (!get_int_item(lineno, data_var.ind_value, data_var.ind_type, -PQgetisnull(ECPGresult, act_tuple, index)))
|
||||||
|
{
|
||||||
|
va_end(args);
|
||||||
return (false);
|
return (false);
|
||||||
|
}
|
||||||
data_var.ind_value = (char *) data_var.ind_value + data_var.ind_offset;
|
data_var.ind_value = (char *) data_var.ind_value + data_var.ind_offset;
|
||||||
ecpg_log("ECPGget_desc: INDICATOR[%d] = %d\n", act_tuple, -PQgetisnull(ECPGresult, act_tuple, index));
|
ecpg_log("ECPGget_desc: INDICATOR[%d] = %d\n", act_tuple, -PQgetisnull(ECPGresult, act_tuple, index));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sqlca->sqlerrd[2] = ntuples;
|
sqlca->sqlerrd[2] = ntuples;
|
||||||
|
va_end(args);
|
||||||
return (true);
|
return (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,6 +626,7 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
if (!ecpg_store_input(lineno, true, var, &tobeinserted, false))
|
if (!ecpg_store_input(lineno, true, var, &tobeinserted, false))
|
||||||
{
|
{
|
||||||
ecpg_free(var);
|
ecpg_free(var);
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -612,11 +664,13 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
|
|||||||
snprintf(type_str, sizeof(type_str), "%d", itemtype);
|
snprintf(type_str, sizeof(type_str), "%d", itemtype);
|
||||||
ecpg_raise(lineno, ECPG_UNKNOWN_DESCRIPTOR_ITEM, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, type_str);
|
ecpg_raise(lineno, ECPG_UNKNOWN_DESCRIPTOR_ITEM, ECPG_SQLSTATE_ECPG_INTERNAL_ERROR, type_str);
|
||||||
ecpg_free(var);
|
ecpg_free(var);
|
||||||
|
va_end(args);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ecpg_free(var);
|
ecpg_free(var);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user