From d433a3628ec5c0166ffbd6b33238b3527632ce38 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sun, 21 Apr 2002 05:21:18 +0000
Subject: [PATCH] Make pg_dump independent of FUNC_MAX_ARGS.

---
 src/bin/pg_dump/pg_dump.c | 19 +++++++++----------
 src/bin/pg_dump/pg_dump.h |  4 ++--
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index 64807c25a00..9763fd54c81 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -22,7 +22,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.250 2002/04/19 23:13:54 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.251 2002/04/21 05:21:17 petere Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1636,9 +1636,13 @@ clearFuncInfo(FuncInfo *fun, int numFuncs)
 			free(fun[i].proname);
 		if (fun[i].usename)
 			free(fun[i].usename);
-		for (a = 0; a < FUNC_MAX_ARGS; ++a)
-			if (fun[i].argtypes[a])
-				free(fun[i].argtypes[a]);
+		if (fun[i].argtypes)
+		{
+			for (a = 0; a < fun[i].nargs; ++a)
+				if (fun[i].argtypes[a])
+					free(fun[i].argtypes[a]);
+			free(fun[i].argtypes);
+		}
 		if (fun[i].prorettype)
 			free(fun[i].prorettype);
 		if (fun[i].prosrc)
@@ -2066,12 +2070,7 @@ getFuncs(int *numFuncs)
 			write_msg(NULL, "WARNING: owner of function \"%s\" appears to be invalid\n",
 					  finfo[i].proname);
 
-		if (finfo[i].nargs < 0 || finfo[i].nargs > FUNC_MAX_ARGS)
-		{
-			write_msg(NULL, "failed sanity check: function %s has more than %d (namely %d) arguments\n",
-					  finfo[i].proname, FUNC_MAX_ARGS, finfo[i].nargs);
-			exit_nicely();
-		}
+		finfo[i].argtypes = malloc(finfo[i].nargs * sizeof(finfo[i].argtypes[0]));
 		parseNumericArray(PQgetvalue(res, i, i_proargtypes),
 						  finfo[i].argtypes,
 						  finfo[i].nargs);
diff --git a/src/bin/pg_dump/pg_dump.h b/src/bin/pg_dump/pg_dump.h
index dc67a2efbef..924388be594 100644
--- a/src/bin/pg_dump/pg_dump.h
+++ b/src/bin/pg_dump/pg_dump.h
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: pg_dump.h,v 1.81 2002/04/11 20:00:08 tgl Exp $
+ * $Id: pg_dump.h,v 1.82 2002/04/21 05:21:18 petere Exp $
  *
  * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
  *
@@ -66,7 +66,7 @@ typedef struct _funcInfo
 	char	   *proowner;
 	Oid			lang;
 	int			nargs;
-	char	   *argtypes[FUNC_MAX_ARGS];
+	char	   **argtypes;
 	char	   *prorettype;
 	int			retset;			/* 1 if the function returns a set, else 0 */
 	char	   *prosrc;
-- 
GitLab