mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +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:
		@@ -422,27 +422,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');
 | 
			
		||||
					for (element = 0; element < asize; element++)
 | 
			
		||||
                                                        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, "}");
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user