mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Let compiler handle size calculation of bool types.
Back in the day this did not work, but modern compilers should handle it themselves.
This commit is contained in:
parent
22f519c92a
commit
293fd7c77e
@ -423,27 +423,13 @@ ecpg_get_data(const PGresult *results, int act_tuple, int act_field, int lineno,
|
||||
case ECPGt_bool:
|
||||
if (pval[0] == 'f' && pval[1] == '\0')
|
||||
{
|
||||
if (offset == sizeof(char))
|
||||
*((char *) (var + offset * act_tuple)) = false;
|
||||
else if (offset == sizeof(int))
|
||||
*((int *) (var + offset * act_tuple)) = false;
|
||||
else
|
||||
ecpg_raise(lineno, ECPG_CONVERT_BOOL,
|
||||
ECPG_SQLSTATE_DATATYPE_MISMATCH,
|
||||
NULL);
|
||||
*((bool *) (var + offset * act_tuple)) = false;
|
||||
pval++;
|
||||
break;
|
||||
}
|
||||
else if (pval[0] == 't' && pval[1] == '\0')
|
||||
{
|
||||
if (offset == sizeof(char))
|
||||
*((char *) (var + offset * act_tuple)) = true;
|
||||
else if (offset == sizeof(int))
|
||||
*((int *) (var + offset * act_tuple)) = true;
|
||||
else
|
||||
ecpg_raise(lineno, ECPG_CONVERT_BOOL,
|
||||
ECPG_SQLSTATE_DATATYPE_MISMATCH,
|
||||
NULL);
|
||||
*((bool *) (var + offset * act_tuple)) = true;
|
||||
pval++;
|
||||
break;
|
||||
}
|
||||
|
@ -752,18 +752,9 @@ ecpg_store_input(const int lineno, const bool force_indicator, const struct vari
|
||||
{
|
||||
strcpy(mallocedval, "{");
|
||||
|
||||
if (var->offset == sizeof(char))
|
||||
for (element = 0; element < asize; element++)
|
||||
sprintf(mallocedval + strlen(mallocedval), "%c,", (((char *) var->value)[element]) ? 't' : 'f');
|
||||
sprintf(mallocedval + strlen(mallocedval), "%c,", (((bool *) var->value)[element]) ? 't' : 'f');
|
||||
|
||||
/*
|
||||
* this is necessary since sizeof(C++'s bool)==sizeof(int)
|
||||
*/
|
||||
else if (var->offset == sizeof(int))
|
||||
for (element = 0; element < asize; element++)
|
||||
sprintf(mallocedval + strlen(mallocedval), "%c,", (((int *) var->value)[element]) ? 't' : 'f');
|
||||
else
|
||||
ecpg_raise(lineno, ECPG_CONVERT_BOOL, ECPG_SQLSTATE_DATATYPE_MISMATCH, NULL);
|
||||
|
||||
strcpy(mallocedval + strlen(mallocedval) - 1, "}");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user