fix polyline decoding
This commit is contained in:
parent
7e2663f2ad
commit
78d530ddae
@ -5,6 +5,8 @@
|
|||||||
- replaced lhs/rhs profiles by using test defined profiles
|
- replaced lhs/rhs profiles by using test defined profiles
|
||||||
- Trip Plugin
|
- Trip Plugin
|
||||||
- changed internal behaviour to prefer the smallest lexicographic result over the largest one
|
- changed internal behaviour to prefer the smallest lexicographic result over the largest one
|
||||||
|
- Bugfixes
|
||||||
|
- fixed a bug where polyline decoding on a defective polyline could end up in out-of-bound access on a vector
|
||||||
|
|
||||||
# 5.4.0
|
# 5.4.0
|
||||||
- Changes from 5.3.0
|
- Changes from 5.3.0
|
||||||
|
@ -100,7 +100,7 @@ std::vector<util::Coordinate> decodePolyline(const std::string &geometry_string)
|
|||||||
b = geometry_string.at(index++) - 63;
|
b = geometry_string.at(index++) - 63;
|
||||||
result |= (b & 0x1f) << shift;
|
result |= (b & 0x1f) << shift;
|
||||||
shift += 5;
|
shift += 5;
|
||||||
} while (b >= 0x20);
|
} while (b >= 0x20 && index < len);
|
||||||
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||||
lat += dlat;
|
lat += dlat;
|
||||||
|
|
||||||
@ -111,7 +111,7 @@ std::vector<util::Coordinate> decodePolyline(const std::string &geometry_string)
|
|||||||
b = geometry_string.at(index++) - 63;
|
b = geometry_string.at(index++) - 63;
|
||||||
result |= (b & 0x1f) << shift;
|
result |= (b & 0x1f) << shift;
|
||||||
shift += 5;
|
shift += 5;
|
||||||
} while (b >= 0x20);
|
} while (b >= 0x20 && index < len);
|
||||||
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
|
||||||
lng += dlng;
|
lng += dlng;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user