]> granicus.if.org Git - postgresql/commitdiff
Fix breakage in GEODEBUG debug code.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 3 Feb 2015 20:20:48 +0000 (15:20 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 3 Feb 2015 20:20:48 +0000 (15:20 -0500)
LINE doesn't have an "m" field (anymore anyway).  Also fix unportable
assumption that %x can print the result of pointer subtraction.

In passing, improve single_decode() in minor ways:
* Remove unnecessary leading-whitespace skip (strtod does that already).
* Make GEODEBUG message more intelligible.
* Remove entirely-useless test to see if strtod returned a silly pointer.
* Don't bother computing trailing-whitespace skip unless caller wants
  an ending pointer.

This has been broken since 261c7d4b653bc3e44c31fd456d94f292caa50d8f.
Although it's only debug code, might as well fix the 9.4 branch too.

src/backend/utils/adt/geo_ops.c

index 54391fd7aba7d6ef67aedaca3a80a8ac906d67dd..6ef420d310ea632a2c3590a05b296d32707dd814 100644 (file)
@@ -127,19 +127,19 @@ single_decode(char *str, float8 *x, char **s)
        if (!PointerIsValid(str))
                return FALSE;
 
-       while (isspace((unsigned char) *str))
-               str++;
        *x = strtod(str, &cp);
+
 #ifdef GEODEBUG
-       printf("single_decode- (%x) try decoding %s to %g\n", (cp - str), str, *x);
+       printf("single_decode- decoded first %d chars of \"%s\" to %g\n",
+                  (int) (cp - str), str, *x);
 #endif
-       if (cp <= str)
-               return FALSE;
-       while (isspace((unsigned char) *cp))
-               cp++;
 
        if (s != NULL)
+       {
+               while (isspace((unsigned char) *cp))
+                       cp++;
                *s = cp;
+       }
 
        return TRUE;
 }      /* single_decode() */
@@ -2857,8 +2857,8 @@ close_ps(PG_FUNCTION_ARGS)
                result = point_copy(&lseg->p[!yh]);             /* below the lseg, take lower
                                                                                                 * end pt */
 #ifdef GEODEBUG
-               printf("close_ps below: tmp A %f  B %f   C %f    m %f\n",
-                          tmp->A, tmp->B, tmp->C, tmp->m);
+               printf("close_ps below: tmp A %f  B %f   C %f\n",
+                          tmp->A, tmp->B, tmp->C);
 #endif
                PG_RETURN_POINT_P(result);
        }
@@ -2869,8 +2869,8 @@ close_ps(PG_FUNCTION_ARGS)
                result = point_copy(&lseg->p[yh]);              /* above the lseg, take higher
                                                                                                 * end pt */
 #ifdef GEODEBUG
-               printf("close_ps above: tmp A %f  B %f   C %f    m %f\n",
-                          tmp->A, tmp->B, tmp->C, tmp->m);
+               printf("close_ps above: tmp A %f  B %f   C %f\n",
+                          tmp->A, tmp->B, tmp->C);
 #endif
                PG_RETURN_POINT_P(result);
        }
@@ -2881,8 +2881,8 @@ close_ps(PG_FUNCTION_ARGS)
         */
        tmp = line_construct_pm(pt, invm);
 #ifdef GEODEBUG
-       printf("close_ps- tmp A %f  B %f   C %f    m %f\n",
-                  tmp->A, tmp->B, tmp->C, tmp->m);
+       printf("close_ps- tmp A %f  B %f   C %f\n",
+                  tmp->A, tmp->B, tmp->C);
 #endif
        result = interpt_sl(lseg, tmp);
        Assert(result != NULL);