mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +03:00 
			
		
		
		
	Fixed segfault due to freeing a struct definition twice if it was a named struct used in a typedef.
This commit is contained in:
		| @@ -1895,3 +1895,8 @@ Mon Jan 10 13:55:32 CET 2005 | |||||||
| 	- Set compat library version to 1.2. | 	- Set compat library version to 1.2. | ||||||
| 	- Set ecpg library version to 4.2. | 	- Set ecpg library version to 4.2. | ||||||
|  |  | ||||||
|  | Tue Jan 25 13:47:45 CET 2005 | ||||||
|  |  | ||||||
|  | 	- Fixed segfault in preprocessor due to free a struct twice. | ||||||
|  | 	- Set ecpg version to 3.2.1. | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| # | # | ||||||
| # Copyright (c) 1998-2005, PostgreSQL Global Development Group | # Copyright (c) 1998-2005, PostgreSQL Global Development Group | ||||||
| # | # | ||||||
| # $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.111 2005/01/18 05:00:28 momjian Exp $ | # $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.112 2005/01/25 12:51:31 meskes Exp $ | ||||||
| # | # | ||||||
| #------------------------------------------------------------------------- | #------------------------------------------------------------------------- | ||||||
|  |  | ||||||
| @@ -14,8 +14,8 @@ top_builddir = ../../../.. | |||||||
| include $(top_builddir)/src/Makefile.global | include $(top_builddir)/src/Makefile.global | ||||||
|  |  | ||||||
| MAJOR_VERSION=3 | MAJOR_VERSION=3 | ||||||
| MINOR_VERSION=3 | MINOR_VERSION=2 | ||||||
| PATCHLEVEL=0 | PATCHLEVEL=1 | ||||||
|  |  | ||||||
| override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \ | override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \ | ||||||
| 	-DMAJOR_VERSION=$(MAJOR_VERSION) \ | 	-DMAJOR_VERSION=$(MAJOR_VERSION) \ | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.303 2005/01/10 12:58:30 meskes Exp $ */ | /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.304 2005/01/25 12:51:31 meskes Exp $ */ | ||||||
|  |  | ||||||
| /* Copyright comment */ | /* Copyright comment */ | ||||||
| %{ | %{ | ||||||
| @@ -4690,7 +4690,7 @@ type_declaration: S_TYPEDEF | |||||||
| 			this->type->type_index = length;    /* length of string */ | 			this->type->type_index = length;    /* length of string */ | ||||||
| 			this->type->type_sizeof = ECPGstruct_sizeof; | 			this->type->type_sizeof = ECPGstruct_sizeof; | ||||||
| 			this->struct_member_list = ($3.type_enum == ECPGt_struct || $3.type_enum == ECPGt_union) ? | 			this->struct_member_list = ($3.type_enum == ECPGt_struct || $3.type_enum == ECPGt_union) ? | ||||||
| 				struct_member_list[struct_level] : NULL; | 				ECPGstruct_member_dup(struct_member_list[struct_level]) : NULL; | ||||||
|  |  | ||||||
| 			if ($3.type_enum != ECPGt_varchar && | 			if ($3.type_enum != ECPGt_varchar && | ||||||
| 			    $3.type_enum != ECPGt_char && | 			    $3.type_enum != ECPGt_char && | ||||||
| @@ -5556,7 +5556,7 @@ ECPGTypedef: TYPE_P | |||||||
| 				this->type->type_index = length;	/* length of string */ | 				this->type->type_index = length;	/* length of string */ | ||||||
| 				this->type->type_sizeof = ECPGstruct_sizeof; | 				this->type->type_sizeof = ECPGstruct_sizeof; | ||||||
| 				this->struct_member_list = ($5.type_enum == ECPGt_struct || $5.type_enum == ECPGt_union) ? | 				this->struct_member_list = ($5.type_enum == ECPGt_struct || $5.type_enum == ECPGt_union) ? | ||||||
| 					struct_member_list[struct_level] : NULL; | 					ECPGstruct_member_dup(struct_member_list[struct_level]) : NULL; | ||||||
|  |  | ||||||
| 				if ($5.type_enum != ECPGt_varchar && | 				if ($5.type_enum != ECPGt_varchar && | ||||||
| 					$5.type_enum != ECPGt_char && | 					$5.type_enum != ECPGt_char && | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user