diff options
| author | Even Rouault <even.rouault@mines-paris.org> | 2019-02-24 12:45:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-02-24 12:45:17 +0100 |
| commit | 36a43f88aa2a136ddb1b901cff469e6e0d9e75d7 (patch) | |
| tree | c2d5f3ebeab346fd01fd56a1608887cd9c833d9a | |
| parent | 70158c3302f087e6ddd71cf8414e5436b44bc71b (diff) | |
| parent | 22a786693f66c815220861f15fd041584d32a1f1 (diff) | |
| download | PROJ-36a43f88aa2a136ddb1b901cff469e6e0d9e75d7.tar.gz PROJ-36a43f88aa2a136ddb1b901cff469e6e0d9e75d7.zip | |
Merge pull request #1291 from rouault/fix_GLIBCXX_ASSERTIONS
Fix -D_GLIBCXX_ASSERTIONS (refs #1290)
| -rw-r--r-- | .travis.yml | 20 | ||||
| -rw-r--r-- | src/iso19111/coordinateoperation.cpp | 85 | ||||
| -rw-r--r-- | src/jniproj.cpp | 2 | ||||
| -rwxr-xr-x | travis/install.sh | 2 | ||||
| -rwxr-xr-x | travis/linux_gcc7/after_success.sh | 5 | ||||
| -rwxr-xr-x | travis/linux_gcc7/before_install.sh | 20 | ||||
| -rwxr-xr-x | travis/linux_gcc7/install.sh | 7 |
7 files changed, 98 insertions, 43 deletions
diff --git a/.travis.yml b/.travis.yml index 137e9afb..bc7e685f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,6 +19,24 @@ matrix: env: - BUILD_NAME=linux_gcc - DETAILS="linux, gcc" + + - os: linux + dist: trusty + sudo: required + services: + - docker + env: + - BUILD_NAME=linux_gcc7 + - DETAILS="linux, gcc7" + - CC=gcc-7 + - CXX=g++-7 + - CXXFLAGS='-g -D_GLIBCXX_ASSERTIONS' + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: ['g++-7','make','autoconf','automake'] + - os: linux dist: trusty compiler: clang @@ -29,11 +47,13 @@ matrix: env: - BUILD_NAME=linux_clang - DETAILS="linux, clang" + - os: osx language: cpp env: - BUILD_NAME=osx - DETAILS="osx" + - os: linux dist: trusty compiler: gcc diff --git a/src/iso19111/coordinateoperation.cpp b/src/iso19111/coordinateoperation.cpp index 7b0adc6f..fbb67e6b 100644 --- a/src/iso19111/coordinateoperation.cpp +++ b/src/iso19111/coordinateoperation.cpp @@ -2156,52 +2156,55 @@ void ParameterValue::_exportToWKT(io::WKTFormatter *formatter) const { const bool isWKT2 = formatter->version() == io::WKTFormatter::Version::WKT2; const auto &l_type = type(); - const auto &l_value = value(); - if (formatter->abridgedTransformation() && l_type == Type::MEASURE) { - const auto &unit = l_value.unit(); - const auto &unitType = unit.type(); - if (unitType == common::UnitOfMeasure::Type::LINEAR) { - formatter->add(l_value.getSIValue()); - } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { - formatter->add( - l_value.convertToUnit(common::UnitOfMeasure::ARC_SECOND)); - } else if (unit == common::UnitOfMeasure::PARTS_PER_MILLION) { - formatter->add(1.0 + l_value.value() * 1e-6); - } else { - formatter->add(l_value.value()); - } - } else if (l_type == Type::MEASURE) { - const auto &unit = l_value.unit(); - if (isWKT2) { - formatter->add(l_value.value()); - } else { - // In WKT1, as we don't output the natural unit, output to the - // registered linear / angular unit. + if (l_type == Type::MEASURE) { + const auto &l_value = value(); + if (formatter->abridgedTransformation()) { + const auto &unit = l_value.unit(); const auto &unitType = unit.type(); if (unitType == common::UnitOfMeasure::Type::LINEAR) { - const auto &targetUnit = *(formatter->axisLinearUnit()); - if (targetUnit.conversionToSI() == 0.0) { - throw io::FormattingException( - "cannot convert value to target linear unit"); - } - formatter->add(l_value.convertToUnit(targetUnit)); + formatter->add(l_value.getSIValue()); } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { - const auto &targetUnit = *(formatter->axisAngularUnit()); - if (targetUnit.conversionToSI() == 0.0) { - throw io::FormattingException( - "cannot convert value to target angular unit"); - } - formatter->add(l_value.convertToUnit(targetUnit)); + formatter->add( + l_value.convertToUnit(common::UnitOfMeasure::ARC_SECOND)); + } else if (unit == common::UnitOfMeasure::PARTS_PER_MILLION) { + formatter->add(1.0 + l_value.value() * 1e-6); } else { - formatter->add(l_value.getSIValue()); + formatter->add(l_value.value()); } - } - if (isWKT2 && unit != common::UnitOfMeasure::NONE) { - if (!formatter->primeMeridianOrParameterUnitOmittedIfSameAsAxis() || - (unit != common::UnitOfMeasure::SCALE_UNITY && - unit != *(formatter->axisLinearUnit()) && - unit != *(formatter->axisAngularUnit()))) { - unit._exportToWKT(formatter); + } else { + const auto &unit = l_value.unit(); + if (isWKT2) { + formatter->add(l_value.value()); + } else { + // In WKT1, as we don't output the natural unit, output to the + // registered linear / angular unit. + const auto &unitType = unit.type(); + if (unitType == common::UnitOfMeasure::Type::LINEAR) { + const auto &targetUnit = *(formatter->axisLinearUnit()); + if (targetUnit.conversionToSI() == 0.0) { + throw io::FormattingException( + "cannot convert value to target linear unit"); + } + formatter->add(l_value.convertToUnit(targetUnit)); + } else if (unitType == common::UnitOfMeasure::Type::ANGULAR) { + const auto &targetUnit = *(formatter->axisAngularUnit()); + if (targetUnit.conversionToSI() == 0.0) { + throw io::FormattingException( + "cannot convert value to target angular unit"); + } + formatter->add(l_value.convertToUnit(targetUnit)); + } else { + formatter->add(l_value.getSIValue()); + } + } + if (isWKT2 && unit != common::UnitOfMeasure::NONE) { + if (!formatter + ->primeMeridianOrParameterUnitOmittedIfSameAsAxis() || + (unit != common::UnitOfMeasure::SCALE_UNITY && + unit != *(formatter->axisLinearUnit()) && + unit != *(formatter->axisAngularUnit()))) { + unit._exportToWKT(formatter); + } } } } else if (l_type == Type::STRING || l_type == Type::FILENAME) { diff --git a/src/jniproj.cpp b/src/jniproj.cpp index 59b5b2a0..6f441529 100644 --- a/src/jniproj.cpp +++ b/src/jniproj.cpp @@ -279,7 +279,7 @@ JNIEXPORT jcharArray JNICALL Java_org_proj4_PJ_getAxisDirections { PJ *pj = getPJ(env, object); if (pj) { - int length = strlen(pj->axis); + int length = static_cast<int>(strlen(pj->axis)); jcharArray array = env->NewCharArray(length); if (array) { jchar* axis = env->GetCharArrayElements(array, nullptr); diff --git a/travis/install.sh b/travis/install.sh index 2013a610..f5fa7d08 100755 --- a/travis/install.sh +++ b/travis/install.sh @@ -23,7 +23,7 @@ cd $TAR_DIRECTORY mkdir build_autoconf cd build_autoconf if [ -f /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h ]; then - CXXFLAGS="-I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux" ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all --with-jni + CXXFLAGS="-I/usr/lib/jvm/java-7-openjdk-amd64/include -I/usr/lib/jvm/java-7-openjdk-amd64/include/linux $CXXFLAGS" ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all --with-jni else ../configure --prefix=/tmp/proj_autoconf_install_from_dist_all fi diff --git a/travis/linux_gcc7/after_success.sh b/travis/linux_gcc7/after_success.sh new file mode 100755 index 00000000..70c6f5cb --- /dev/null +++ b/travis/linux_gcc7/after_success.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +set -e + +#./travis/after_success.sh diff --git a/travis/linux_gcc7/before_install.sh b/travis/linux_gcc7/before_install.sh new file mode 100755 index 00000000..25c7483f --- /dev/null +++ b/travis/linux_gcc7/before_install.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +set -e + +./travis/before_install.sh + +sudo apt-get update -qq +sudo apt-get install -y cppcheck +sudo apt-get install -qq lcov +sudo apt-get install -qq doxygen graphviz +sudo apt-get install -qq sqlite3 libsqlite3-dev +sudo apt-get install -qq openjdk-7-jdk + +#scripts/cppcheck.sh +#scripts/doxygen.sh + +#pip install --user sphinxcontrib-bibtex +#pip install --user cpp-coveralls + +#./travis/docker.sh diff --git a/travis/linux_gcc7/install.sh b/travis/linux_gcc7/install.sh new file mode 100755 index 00000000..b957b927 --- /dev/null +++ b/travis/linux_gcc7/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -e + +export CCACHE_CPP2=yes + +CC="ccache $CC" CXX="ccache $CXX" CFLAGS="-std=c89 -Werror $CFLAGS" CXXFLAGS="-Werror $CXXFLAGS" ./travis/install.sh |
