Hi,

while compiling on gcc 7.2.0 (on ARM), I got this warning:

    rangetypes_spgist.c: In function 'spg_range_quad_inner_consistent':
    rangetypes_spgist.c:559:29: warning: comparison between pointer and
    zero character constant [-Wpointer-compare]
          if (in->traversalValue != (Datum) 0)
                                 ^~
    rangetypes_spgist.c:559:10: note: did you mean to dereference the
    pointer?
          if (in->traversalValue != (Datum) 0)
              ^

I believe we should simply treat the traversalValue as pointer, and
change the condition to

    if (in->traversalValue)

Patch attached.


regards

-- 
Tomas Vondra                  http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
>From 3b0528e9b56b9ff2dec4c3670d78ad9018224065 Mon Sep 17 00:00:00 2001
From: Tomas Vondra <to...@2ndquadrant.com>
Date: Sat, 18 Nov 2017 20:25:02 +0100
Subject: [PATCH] Fix compiler warning when comparing traversalValue

On gcc 7.2.0, comparing pointer to (Datum)0 produces a warning. Treat
it as a simple pointer to fix that.
---
 src/backend/utils/adt/rangetypes_spgist.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/backend/utils/adt/rangetypes_spgist.c b/src/backend/utils/adt/rangetypes_spgist.c
index d934105..27fbf66 100644
--- a/src/backend/utils/adt/rangetypes_spgist.c
+++ b/src/backend/utils/adt/rangetypes_spgist.c
@@ -556,7 +556,7 @@ spg_range_quad_inner_consistent(PG_FUNCTION_ARGS)
 					 * for lower or upper bounds to be adjacent. Deserialize
 					 * previous centroid range if present for checking this.
 					 */
-					if (in->traversalValue != (Datum) 0)
+					if (in->traversalValue)
 					{
 						prevCentroid = DatumGetRangeTypeP(in->traversalValue);
 						range_deserialize(typcache, prevCentroid,
-- 
2.9.5

Reply via email to