diff options
author | Kevin Bowling <kbowling@FreeBSD.org> | 2020-09-13 03:19:20 +0000 |
---|---|---|
committer | Kevin Bowling <kbowling@FreeBSD.org> | 2020-09-13 03:19:20 +0000 |
commit | 238d925aae9c19070fe5982b9e12e6d62336b86e (patch) | |
tree | 0ca142f676c396e6a43aa328c91594f978a1ea64 /databases/pgsphere/files/patch-polygon.c | |
parent | graphics/oidn: Update 1.1.0 -> 1.2.3 (diff) |
databases/pgsphere: stop using VLAs to fix PG12 compilation
PR: 248657
Reported by: vvd@unislabs.com
Obtained from: https://github.com/akorotkov/pgsphere/pull/14
Sponsored by: BBOX.io
Notes
Notes:
svn path=/head/; revision=548447
Diffstat (limited to 'databases/pgsphere/files/patch-polygon.c')
-rw-r--r-- | databases/pgsphere/files/patch-polygon.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/databases/pgsphere/files/patch-polygon.c b/databases/pgsphere/files/patch-polygon.c new file mode 100644 index 000000000000..15ff051fe439 --- /dev/null +++ b/databases/pgsphere/files/patch-polygon.c @@ -0,0 +1,54 @@ +--- polygon.c.orig 2019-10-30 10:18:38 UTC ++++ polygon.c +@@ -824,13 +824,21 @@ spherepoly_in(PG_FUNCTION_ARGS) + nelem = get_path_count(); + if (nelem > 2) + { +- SPoint arr[nelem]; ++ // allocate arr ++ SPoint* arr = (SPoint *)malloc(nelem * sizeof(SPoint)); ++ if (arr == NULL) { ++ reset_buffer(); ++ elog(ERROR, "spherepoly_in: Could not allocate array."); ++ PG_RETURN_NULL(); ++ } + + for (i = 0; i < nelem; i++) + { + get_path_elem(i, &arr[i].lng, &arr[i].lat); + } + poly = spherepoly_from_array(&arr[0], nelem); ++ // free allocated array ++ free(arr); + } + else + { +@@ -892,11 +900,17 @@ spherepoly_area(PG_FUNCTION_ARGS) + { + SPOLY *poly = PG_GETARG_SPOLY(0); + int32 i; +- SPoint s[poly->npts + 2]; ++ SPoint *s = (SPoint*)malloc((poly->npts+2)*sizeof(SPoint)); ++ //SPoint s[poly->npts + 2]; + SPoint stmp[2]; + SEuler se; + float8 sum = 0.0; + ++ if (s == NULL) { ++ elog(ERROR, "spherepoly_area: Could not allocate array."); ++ PG_RETURN_NULL(); ++ } ++ + memcpy((void *) &s[1], + (void *) &poly->p[0], + poly->npts * sizeof(SPoint)); +@@ -935,6 +949,9 @@ spherepoly_area(PG_FUNCTION_ARGS) + { + sum = 0.0; + } ++ ++ // free array ++ free(s); + + PG_RETURN_FLOAT8(sum); + } |