2017/xx/xx
* Bug fixes *
- -
+ - #3713, Support encodings that happen to output a '\' character
PostGIS 2.4.2
static void out_encoded_polyline_test_geoms(void)
{
+ /* Magic Linestring */
+ do_encoded_polyline_test(
+ "SRID=4326;LINESTRING(33.6729 38.7071,33.6692 38.701,33.6673 38.6972,33.6626 38.6871)",
+ 5,
+ "k~fkFsvolEbe@bVvVzJb~@j\\");
+ return;
+
/* Linestring */
do_encoded_polyline_test(
"LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)",
each value with 0x20 if another bit chunk follows and add 63*/
int nextValue = (0x20 | (numberToEncode & 0x1f)) + 63;
stringbuffer_aprintf(sb, "%c", (char)nextValue);
- if(92 == nextValue)
- stringbuffer_aprintf(sb, "%c", (char)nextValue);
/* Break the binary value out into 5-bit chunks */
numberToEncode >>= 5;
numberToEncode += 63;
stringbuffer_aprintf(sb, "%c", (char)numberToEncode);
- if(92 == numberToEncode)
- stringbuffer_aprintf(sb, "%c", (char)numberToEncode);
}
lwfree(delta);
PG_RETURN_NULL();
}
lwgeom = lwgeom_from_gserialized(geom);
- PG_FREE_IF_COPY(geom, 0);
if (PG_NARGS() > 1 && !PG_ARGISNULL(1))
{
encodedpolyline = lwgeom_to_encoded_polyline(lwgeom, precision);
lwgeom_free(lwgeom);
+ PG_FREE_IF_COPY(geom, 0);
- result = cstring2text(encodedpolyline);
+ result = cstring2text(encodedpolyline);
lwfree(encodedpolyline);
PG_RETURN_TEXT_P(result);