From b1fdc727c37b23da947b4b0d440f723f31beb84d Mon Sep 17 00:00:00 2001 From: Teodor Sigaev 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 6a01276ca2..186b3d337a 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); }