From d934a052348c1fa017ff677d08e74c643e3f416c Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Tue, 25 Nov 2014 15:16:49 -0500
Subject: [PATCH] Fix uninitialized-variable warning.

In passing, add an Assert defending the presumption that bytes_left
is positive to start with.  (I'm not exactly convinced that using an
unsigned type was such a bright thing here, but let's at least do
this much.)
---
 src/backend/utils/misc/guc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index f04757c5826..6b4db305e58 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -8741,9 +8741,10 @@ SerializeGUCState(Size maxsize, char *start_address)
 	Size		actual_size;
 	Size		bytes_left;
 	int			i;
-	int			i_role;
+	int			i_role = -1;
 
 	/* Reserve space for saving the actual size of the guc state */
+	Assert(maxsize > sizeof(actual_size));
 	curptr = start_address + sizeof(actual_size);
 	bytes_left = maxsize - sizeof(actual_size);
 
@@ -8759,7 +8760,8 @@ SerializeGUCState(Size maxsize, char *start_address)
 		else
 			serialize_variable(&curptr, &bytes_left, guc_variables[i]);
 	}
-	serialize_variable(&curptr, &bytes_left, guc_variables[i_role]);
+	if (i_role >= 0)
+		serialize_variable(&curptr, &bytes_left, guc_variables[i_role]);
 
 	/* Store actual size without assuming alignment of start_address. */
 	actual_size = maxsize - bytes_left - sizeof(actual_size);
-- 
GitLab