[darwin] Preflight argument validity before constructing mbgl::LatLng

This commit is contained in:
John Firebaugh
2017-04-03 11:51:40 -07:00
parent 391a10db0e
commit e6122d9bf0

View File

@@ -13,6 +13,18 @@
CGRect MGLExtendRect(CGRect rect, CGPoint point);
NS_INLINE mbgl::LatLng MGLLatLngFromLocationCoordinate2D(CLLocationCoordinate2D coordinate) {
if (std::isnan(coordinate.latitude)) {
[NSException raise:NSInvalidArgumentException format:@"latitude must not be NaN"];
}
if (std::isnan(coordinate.longitude)) {
[NSException raise:NSInvalidArgumentException format:@"longitude must not be NaN"];
}
if (std::abs(coordinate.latitude) > 90.0) {
[NSException raise:NSInvalidArgumentException format:@"latitude must be between -90 and 90"];
}
if (!std::isfinite(coordinate.longitude)) {
[NSException raise:NSInvalidArgumentException format:@"longitude must not be infinite"];
}
return mbgl::LatLng(coordinate.latitude, coordinate.longitude);
}