From c50b8a4637bcaab2f0e1fb69c39fdcec7e535874 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Fri, 23 Nov 2012 14:39:27 +0100
Subject: [PATCH] Applied patch by Chen Huajun <chenhj@cn.fujitsu.com> to make
 ecpg able to cope with very long structs.

---
 src/interfaces/ecpg/preproc/type.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/interfaces/ecpg/preproc/type.c b/src/interfaces/ecpg/preproc/type.c
index c743616a6ca..cf2ff158413 100644
--- a/src/interfaces/ecpg/preproc/type.c
+++ b/src/interfaces/ecpg/preproc/type.c
@@ -506,8 +506,8 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, char *arrsiz,
 	 */
 	struct ECPGstruct_member *p,
 			   *ind_p = NULL;
-	char		pbuf[BUFSIZ],
-				ind_pbuf[BUFSIZ];
+	char		*pbuf = (char *) mm_alloc(strlen(name) + ((prefix == NULL) ? 0 : strlen(prefix)) + 3);
+	char		*ind_pbuf = (char *) mm_alloc(strlen(ind_name) + ((ind_prefix == NULL) ? 0 : strlen(ind_prefix)) + 3);
 
 	if (atoi(arrsiz) == 1)
 		sprintf(pbuf, "%s%s.", prefix ? prefix : "", name);
@@ -540,6 +540,9 @@ ECPGdump_a_struct(FILE *o, const char *name, const char *ind_name, char *arrsiz,
 		if (ind_p != NULL && ind_p != &struct_no_indicator)
 			ind_p = ind_p->next;
 	}
+
+	free(pbuf);
+	free(ind_pbuf);
 }
 
 void
-- 
GitLab