From 2b1cf12bf36e536cd29994951b46f180e81e1179 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Mon, 18 Feb 2019 22:50:16 +0100 Subject: Fix a few issues with i386 builds Relax tolerances in a few unit test, and in laea code. Seen with gcc 5.3 and also 7.1 Related to the use of the 387 floating-point math, since they disappear with gcc 7.1 if using non-default -mfpmath=sse -msse --- src/iso19111/io.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/iso19111/io.cpp') diff --git a/src/iso19111/io.cpp b/src/iso19111/io.cpp index 6edce579..e14239b0 100644 --- a/src/iso19111/io.cpp +++ b/src/iso19111/io.cpp @@ -6920,7 +6920,11 @@ CRSNNPtr PROJStringParser::Private::buildProjectedCRS( const auto &lat_2 = getParamValue(step, "lat_2"); const auto &k = getParamValueK(step); if (lat_2.empty() && !lat_0.empty() && !lat_1.empty() && - getAngularValue(lat_0) == getAngularValue(lat_1)) { + (lat_0 == lat_1 || + // For some reason with gcc 5.3.1-14ubuntu2 32bit, the following + // comparison returns false even if lat_0 == lat_1. Smells like + // a compiler bug + getAngularValue(lat_0) == getAngularValue(lat_1))) { mapping = getMapping(EPSG_CODE_METHOD_LAMBERT_CONIC_CONFORMAL_1SP); } else if (!k.empty() && getNumericValue(k) != 1.0) { mapping = getMapping( -- cgit v1.2.3