summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2005-01-25 12:51:31 +0000
committerMichael Meskes2005-01-25 12:51:31 +0000
commitd314616d128ba692aec434bd376bc40886f98f7b (patch)
tree574c6d35659d74a37382ef3ec9eda2fd90895d81
parentfe30edbab8b01123c503760d2804f6764cd27a51 (diff)
Fixed segfault due to freeing a struct definition twice if it was a named struct used in a typedef.
-rw-r--r--src/interfaces/ecpg/ChangeLog5
-rw-r--r--src/interfaces/ecpg/preproc/Makefile6
-rw-r--r--src/interfaces/ecpg/preproc/preproc.y6
3 files changed, 11 insertions, 6 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 1f8252731b..3e04df895c 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1895,3 +1895,8 @@ Mon Jan 10 13:55:32 CET 2005
- Set compat library version to 1.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.
+
diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile
index d737574f06..a0599bcf5e 100644
--- a/src/interfaces/ecpg/preproc/Makefile
+++ b/src/interfaces/ecpg/preproc/Makefile
@@ -4,7 +4,7 @@
#
# 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
MAJOR_VERSION=3
-MINOR_VERSION=3
-PATCHLEVEL=0
+MINOR_VERSION=2
+PATCHLEVEL=1
override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \
-DMAJOR_VERSION=$(MAJOR_VERSION) \
diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y
index 8ee348fc2f..6797787d8e 100644
--- a/src/interfaces/ecpg/preproc/preproc.y
+++ b/src/interfaces/ecpg/preproc/preproc.y
@@ -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 */
%{
@@ -4690,7 +4690,7 @@ type_declaration: S_TYPEDEF
this->type->type_index = length; /* length of string */
this->type->type_sizeof = ECPGstruct_sizeof;
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 &&
$3.type_enum != ECPGt_char &&
@@ -5556,7 +5556,7 @@ ECPGTypedef: TYPE_P
this->type->type_index = length; /* length of string */
this->type->type_sizeof = ECPGstruct_sizeof;
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 &&
$5.type_enum != ECPGt_char &&