Fix Windows build broken in 6943a946c7e5eb72d53c0ce71f08a81a133503bd
authorTeodor Sigaev <teodor@sigaev.ru>
Fri, 11 Mar 2016 17:10:20 +0000 (20:10 +0300)
committerTeodor Sigaev <teodor@sigaev.ru>
Fri, 11 Mar 2016 17:10:20 +0000 (20:10 +0300)
Also it fixes dynamic array allocation disallowed by ANSI-C.

Author: Stas Kelvich

src/backend/utils/adt/tsvector_op.c

index 6a01276ca269a17801a3ad80080a1bd1786d1ca6..186b3d337ad9b26cfc30a432e18ea8743be0bebb 100644 (file)
@@ -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);
 }