From b1fdc727c37b23da947b4b0d440f723f31beb84d Mon Sep 17 00:00:00 2001
From: Teodor Sigaev <teodor@sigaev.ru>
Date: Fri, 11 Mar 2016 20:10:20 +0300
Subject: [PATCH] Fix Windows build broken in
 6943a946c7e5eb72d53c0ce71f08a81a133503bd

Also it fixes dynamic array allocation disallowed by ANSI-C.

Author: Stas Kelvich
---
 src/backend/utils/adt/tsvector_op.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/backend/utils/adt/tsvector_op.c b/src/backend/utils/adt/tsvector_op.c
index 6a01276ca26..186b3d337ad 100644
--- a/src/backend/utils/adt/tsvector_op.c
+++ b/src/backend/utils/adt/tsvector_op.c
@@ -66,7 +66,7 @@ typedef struct
 #define STATHDRSIZE (offsetof(TSVectorStat, data))
 
 static Datum tsvector_update_trigger(PG_FUNCTION_ARGS, bool config_column);
-static int tsvector_bsearch(TSVector tsin, char *lexin, int lexin_len);
+static int tsvector_bsearch(const TSVector tsv, char *lexeme, int lexeme_len);
 
 /*
  * Order: haspos, len, word, for all positions (pos, weight)
@@ -684,10 +684,12 @@ tsvector_to_array(PG_FUNCTION_ARGS)
 {
 	TSVector			tsin  = PG_GETARG_TSVECTOR(0);
 	WordEntry		   *arrin = ARRPTR(tsin);
-	Datum				elements[tsin->size];
+	Datum				*elements;
 	int					i;
 	ArrayType		   *array;
 
+	elements = palloc(tsin->size * sizeof(Datum));
+
 	for (i = 0; i < tsin->size; i++)
 	{
 		elements[i] = PointerGetDatum(
@@ -696,6 +698,8 @@ tsvector_to_array(PG_FUNCTION_ARGS)
 	}
 
 	array = construct_array(elements, tsin->size, TEXTOID, -1, false, 'i');
+
+	pfree(elements);
 	PG_FREE_IF_COPY(tsin, 0);
 	PG_RETURN_POINTER(array);
 }
-- 
GitLab