aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2015-12-14 16:44:40 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2015-12-14 16:44:40 -0300
commit0d8f3d5d11f7304c82ce1383bbb491ec6abcffc4 (patch)
tree5ffc138b8d308cf004638b85f820faa6f92e4a9a
parente2f1765ce0770e813971336bb4603099d24cbe57 (diff)
downloadpostgresql-0d8f3d5d11f7304c82ce1383bbb491ec6abcffc4.tar.gz
postgresql-0d8f3d5d11f7304c82ce1383bbb491ec6abcffc4.zip
Add missing CHECK_FOR_INTERRUPTS in lseg_inside_poly
Apparently, there are bugs in this code that cause it to loop endlessly. That bug still needs more research, but in the meantime it's clear that the loop is missing a check for interrupts so that it can be cancelled timely. Backpatch to 9.1 -- this has been missing since 49475aab8d0d.
-rw-r--r--src/backend/utils/adt/geo_ops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/utils/adt/geo_ops.c b/src/backend/utils/adt/geo_ops.c
index a3af08ad6b0..ad48dfcb4b7 100644
--- a/src/backend/utils/adt/geo_ops.c
+++ b/src/backend/utils/adt/geo_ops.c
@@ -20,6 +20,7 @@
#include <ctype.h>
#include "libpq/pqformat.h"
+#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/geo_decls.h"
@@ -3931,6 +3932,8 @@ lseg_inside_poly(Point *a, Point *b, POLYGON *poly, int start)
{
Point *interpt;
+ CHECK_FOR_INTERRUPTS();
+
s.p[1] = poly->p[i];
if (on_ps_internal(t.p, &s))