From 08d1b22b3be2305ad6b83ca275829ff26305f5d7 Mon Sep 17 00:00:00 2001
From: Michael Meskes <meskes@postgresql.org>
Date: Sun, 24 Nov 2013 12:51:21 +0100
Subject: [PATCH] Allow C array definitions to use sizeof().

When parsing C variable definitions ecpg should allow sizeof() operators as array dimensions.
---
 src/interfaces/ecpg/preproc/ecpg.trailer | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index 342b7bc4d4c..6ef9f1ab9d8 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1865,6 +1865,11 @@ Iresult:        Iconst			{ $$ = $1; }
                 | Iresult '%' Iresult   { $$ = cat_str(3, $1, mm_strdup("%"), $3); }
                 | ecpg_sconst		{ $$ = $1; }
                 | ColId                 { $$ = $1; }
+		| ColId '(' ColId ')'   { if (pg_strcasecmp($1, "sizeof") != 0)
+						mmerror(PARSE_ERROR, ET_ERROR, "operator not allowed in variable definition");
+					 else
+						$$ = cat_str(4,$1, mm_strdup("("), $3, mm_strdup(")"));
+					}
                 ;
 
 execute_rest: /* EMPTY */	{ $$ = EMPTY; }
-- 
GitLab