[Git][debian-gis-team/osmcoastline][upstream] New upstream version 2.5.0

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Sun Jan 18 17:56:14 GMT 2026



Bas Couwenberg pushed to branch upstream at Debian GIS Project / osmcoastline


Commits:
5b97075b by Bas Couwenberg at 2026-01-18T18:47:34+01:00
New upstream version 2.5.0
- - - - -


27 changed files:

- .clang-tidy
- .github/workflows/ci.yml
- .github/workflows/clang-tidy.yml
- CHANGELOG.md
- CMakeLists.txt
- man/manpage.template
- osmcoastline_readmeta
- src/coastline_polygons.cpp
- src/coastline_polygons.hpp
- src/coastline_ring.cpp
- src/coastline_ring.hpp
- src/coastline_ring_collection.cpp
- src/coastline_ring_collection.hpp
- src/nodegrid2opl.cpp
- src/options.cpp
- src/options.hpp
- src/osmcoastline.cpp
- src/osmcoastline_filter.cpp
- src/osmcoastline_segments.cpp
- src/osmcoastline_ways.cpp
- src/output_database.cpp
- src/output_database.hpp
- src/return_codes.hpp
- src/srs.cpp
- src/srs.hpp
- src/stats.hpp
- src/util.hpp


Changes:

=====================================
.clang-tidy
=====================================
@@ -1,5 +1,5 @@
 ---
-Checks: '*,-altera-*,-android-cloexec-*,-boost-use-ranges,-bugprone-easily-swappable-parameters,-cert-err58-cpp,-cert-err60-cpp,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-vararg,-fuchsia-*,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-no-array-decay,-hicpp-vararg,-llvmlibc-*,-misc-no-recursion,-modernize-avoid-c-arrays,-modernize-use-trailing-return-type,-readability-implicit-bool-cast,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers,-readability-use-anyofallof'
+Checks: '*,-altera-*,-android-cloexec-*,-boost-use-ranges,-bugprone-easily-swappable-parameters,-cert-err58-cpp,-cert-err60-cpp,-concurrency-mt-unsafe,-cppcoreguidelines-avoid-c-arrays,-cppcoreguidelines-avoid-magic-numbers,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-static-cast-downcast,-cppcoreguidelines-pro-type-vararg,-fuchsia-*,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-no-array-decay,-hicpp-vararg,-llvm-prefer-static-over-anonymous-namespace,-llvmlibc-*,-misc-include-cleaner,-misc-no-recursion,-modernize-avoid-c-arrays,-modernize-use-trailing-return-type,-readability-implicit-bool-cast,-readability-identifier-length,-readability-implicit-bool-conversion,-readability-magic-numbers,-readability-use-anyofallof'
 #
 #  For a list of check options, see:
 #  http://clang.llvm.org/extra/clang-tidy/checks/list.html
@@ -24,6 +24,9 @@ Checks: '*,-altera-*,-android-cloexec-*,-boost-use-ranges,-bugprone-easily-swapp
 #  cert-err60-cpp
 #    Reports exceptions from standard library as broken.
 #
+#  concurrency-mt-unsafe
+#    All the code is single-threaded.
+#
 #  cppcoreguidelines-avoid-c-arrays
 #  hicpp-avoid-c-arrays
 #  modernize-avoid-c-arrays
@@ -60,9 +63,15 @@ Checks: '*,-altera-*,-android-cloexec-*,-boost-use-ranges,-bugprone-easily-swapp
 #  hicpp-vararg
 #    Too strict, sometimes calling vararg functions is necessary.
 #
+#  llvm-prefer-static-over-anonymous-namespace
+#    Matter of taste and we are not following this one.
+#
 #  llvmlibc-*
 #    Not applicable.
 #
+#  misc-include-cleaner
+#    Too many reports. Disabled for now.
+#
 #  misc-no-recursion
 #    Nothing wrong about recursion.
 #


=====================================
.github/workflows/ci.yml
=====================================
@@ -5,126 +5,70 @@ on: [ push, pull_request ]
 jobs:
   linux:
     runs-on: ubuntu-latest
+    timeout-minutes: 30
     strategy:
       fail-fast: false
       matrix:
-        name: [Ubuntu-20, Ubuntu-22, Ubuntu-24, Debian-10, Debian-11, Debian-12, Debian-Testing, Debian-Experimental, Fedora-37, Fedora-38, Fedora-39, Fedora-40]
+        image:
+          - "ubuntu:22.04"        # gcc 12.2.0, clang 15.0.7, cmake 3.24.2
+          - "ubuntu:24.04"        # gcc 14.2.0, clang 18.1.3, cmake 3.28.3
+          - "debian:bookworm"     # gcc 12.2.0, clang 15.0.6, cmake 3.25.1
+          - "debian:trixie"       # gcc 14.2.0, clang 19.1.7, cmake 3.31.6
+          - "debian:testing"
+          - "debian:experimental"
+          - "fedora:40"
+          - "fedora:41"
+          - "fedora:42"
+          - "fedora:43"
         build_type: [Dev]
         cpp_compiler: [g++]
-        cpp_version: [c++14]
+        cpp_version: [14]
         include:
-          - name: Ubuntu-20
-            # Uses gcc 9.3.0, clang 10.0.0, cmake 3.16.3
-            image: "ubuntu:20.04"
-            ubuntu: 20
-          - name: Ubuntu-22
-            # Uses gcc 12.2.0, clang 15.0.7, cmake 3.24.2
-            image: "ubuntu:22.04"
-            ubuntu: 22
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Ubuntu-24
-            image: "ubuntu:24.04"
-            ubuntu: 24
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-10
-            # Uses gcc 8.3.0, clang 7.0.1, cmake 3.13.4
-            image: "debian:buster"
-          - name: Debian-11
-            # Uses gcc 10.2.1, clang 11.0.1, cmake 3.18.4
-            image: "debian:bullseye"
-          - name: Debian-11
-            image: "debian:bullseye"
-            cpp_version: c++17
-          - name: Debian-11
-            image: "debian:bullseye"
-            cpp_version: c++20
-          - name: Debian-11
-            image: "debian:bullseye"
+          - image: "debian:bookworm"
             c_compiler: clang
             cpp_compiler: clang++
-          - name: Debian-11
-            image: "debian:bullseye"
+          - image: "debian:trixie"
+            cpp_version: 17
+          - image: "debian:trixie"
+            cpp_version: 20
+          - image: "debian:trixie"
+            cpp_version: 23
+          - image: "debian:trixie"
             c_compiler: clang
             cpp_compiler: clang++
-            cpp_version: c++17
-          - name: Debian-11
-            image: "debian:bullseye"
+          - image: "debian:trixie"
             c_compiler: clang
             cpp_compiler: clang++
-            cpp_version: c++20
-          - name: Debian-11
-            image: "debian:bullseye"
-            build_type: RelWithDebInfo
-          - name: Debian-11
-            image: "debian:bullseye"
-            c_compiler: clang
-            cpp_compiler: clang++
-            CXXFLAGS: -fsanitize=address,undefined,integer -fno-sanitize-recover=all -fno-omit-frame-pointer
-            LDFLAGS: -fsanitize=address,undefined,integer
-          - name: Debian-12
-            # Uses gcc 12.2.0, clang 15.0.6, cmake 3.25.1
-            image: "debian:bookworm"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-12
-            image: "debian:bookworm"
-            cpp_version: c++17
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-12
-            image: "debian:bookworm"
-            cpp_version: c++20
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-12
-            image: "debian:bookworm"
+            cpp_version: 17
+          - image: "debian:trixie"
             c_compiler: clang
             cpp_compiler: clang++
-          - name: Debian-12
-            image: "debian:bookworm"
+            cpp_version: 20
+          - image: "debian:trixie"
             c_compiler: clang
             cpp_compiler: clang++
-            cpp_version: c++17
-          - name: Debian-12
-            image: "debian:bookworm"
-            c_compiler: clang
-            cpp_compiler: clang++
-            cpp_version: c++20
-          - name: Debian-12
-            image: "debian:bookworm"
+            cpp_version: 23
+          - image: "debian:trixie"
             build_type: RelWithDebInfo
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-12
-            image: "debian:bookworm"
+          - image: "debian:trixie"
             c_compiler: clang
             cpp_compiler: clang++
-            CXXFLAGS: -fsanitize=address,undefined,integer -fno-sanitize-recover=all -fno-omit-frame-pointer
-            LDFLAGS: -fsanitize=address,undefined,integer
-          - name: Debian-Testing
-            image: "debian:testing"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-Testing
-            image: "debian:testing"
+            CXXFLAGS: -fsanitize=address,undefined -fno-sanitize-recover=all -fno-omit-frame-pointer
+            LDFLAGS: -fsanitize=address,undefined
+          - image: "debian:testing"
             c_compiler: clang
             cpp_compiler: clang++
-          - name: Debian-Experimental
-            image: "debian:experimental"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Debian-Experimental
-            image: "debian:experimental"
+          - image: "debian:experimental"
             c_compiler: clang
             cpp_compiler: clang++
-          - name: Fedora-37
-            # Uses gcc 12.3.1, clang 15.0.7, cmake 3.26.4
-            image: "fedora:37"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Fedora-38
-            # Uses gcc 13.0.1, clang 16.0.5, cmake 3.26.4
-            image: "fedora:38"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Fedora-39
-            image: "fedora:39"
-            CXXFLAGS: -Wno-stringop-overread
-          - name: Fedora-40
-            image: "fedora:40"
-            CXXFLAGS: -Wno-stringop-overread
+          - image: "fedora:40"
+            CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF
+          - image: "fedora:41"
+            CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF
+          - image: "fedora:42"
+            CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF
+          - image: "fedora:43"
+            CMAKE_OPTS: -DRUN_TESTS_WITH_BINARY_COMPARE=OFF
     container:
       image: ${{ matrix.image }}
       env:
@@ -157,27 +101,23 @@ jobs:
             make \
             spatialite-bin \
             zlib1g-dev
-      - name: Install compiler
-        shell: bash
-        if: matrix.cpp_compiler == 'clang++-14'
-        run: apt-get install -yq clang-14
       - name: Prepare container (dnf)
         shell: bash
         if: startsWith(matrix.image, 'fedora:')
         run: |
           dnf install --quiet --assumeyes \
-              bzip2-devel \
-              cmake \
-              expat-devel \
-              gcc-c++ \
-              gdal-devel \
-              geos-devel \
-              git \
-              lz4-devel \
-              make \
-              proj-devel \
-              spatialite-tools \
-              zlib-devel
+            bzip2-devel \
+            cmake \
+            expat-devel \
+            gcc-c++ \
+            gdal-devel \
+            geos-devel \
+            git \
+            lz4-devel \
+            make \
+            proj-devel \
+            spatialite-tools \
+            zlib-devel
       - uses: actions/checkout at v4
       - uses: ./.github/actions/install-from-git
       - uses: ./.github/actions/cmake
@@ -186,9 +126,11 @@ jobs:
 
   ubuntu-latest:
     runs-on: ubuntu-24.04
+    timeout-minutes: 30
     env:
       CC: clang-18
       CXX: clang++-18
+      CXXFLAGS: -Werror
       BUILD_TYPE: Dev
     steps:
       - uses: actions/checkout at v4
@@ -199,20 +141,22 @@ jobs:
       - uses: ./.github/actions/ctest
 
   macos:
+    runs-on: ${{ matrix.os }}
+    timeout-minutes: 30
     strategy:
       fail-fast: false
       matrix:
         os:
-          - "macos-14"
-          - "macos-15"
+          - macos-14
+          - macos-15
         build_type: [Dev]
         include:
-          - os: "macos-14"
+          - os: macos-15
             build_type: Release
-    runs-on: ${{ matrix.os }}
     env:
       CC: clang
       CXX: clang++
+      CXXFLAGS: -Werror
       BUILD_TYPE: ${{ matrix.build_type }}
     steps:
       - uses: actions/checkout at v4


=====================================
.github/workflows/clang-tidy.yml
=====================================
@@ -8,14 +8,14 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        image: ["debian:bookworm", "debian:testing", "debian:experimental"]
+        image: ["debian:trixie", "debian:testing"]
         include:
-          - image: "debian:bookworm"
-            clang: 15
-          - image: "debian:testing"
+          - image: "debian:trixie"
             clang: 19
-          - image: "debian:experimental"
-            clang: 20
+          - image: "debian:testing"
+            clang: 21
+#          - image: "debian:experimental"
+#            clang: 21
     container:
       image: ${{ matrix.image }}
       env:


=====================================
CHANGELOG.md
=====================================
@@ -13,6 +13,18 @@ This project adheres to [Semantic Versioning](https://semver.org/).
 ### Fixed
 
 
+## [2.5.0] - 2026-01-18
+
+### Changed
+
+- Switch from using text ids to 64bit integer ids.
+- Various small code cleanups.
+
+### Fixed
+
+- Fix: Conversion of LinearRings into LineStrings.
+
+
 ## [2.4.1] - 2025-01-14
 
 ### Added
@@ -228,7 +240,9 @@ This project adheres to [Semantic Versioning](https://semver.org/).
 - Added man pages
 
 
-[unreleased]: https://github.com/osmcode/osmium-tool/compare/v2.4.0...HEAD
+[unreleased]: https://github.com/osmcode/osmium-tool/compare/v2.5.0...HEAD
+[2.5.0]: https://github.com/osmcode/osmium-tool/compare/v2.4.1...v2.5.0
+[2.4.1]: https://github.com/osmcode/osmium-tool/compare/v2.4.0...v2.4.1
 [2.4.0]: https://github.com/osmcode/osmium-tool/compare/v2.3.1...v2.4.0
 [2.3.1]: https://github.com/osmcode/osmium-tool/compare/v2.3.0...v2.3.1
 [2.3.0]: https://github.com/osmcode/osmium-tool/compare/v2.2.4...v2.3.0


=====================================
CMakeLists.txt
=====================================
@@ -6,9 +6,9 @@
 #
 #-----------------------------------------------------------------------------
 
-cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.10)
 
-project(osmcoastline VERSION 2.4.1 LANGUAGES CXX C)
+project(osmcoastline VERSION 2.5.0 LANGUAGES CXX C)
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
 
@@ -16,9 +16,22 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
 
 set(AUTHOR "Jochen Topf <jochen at topf.org>")
 
-set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+#-----------------------------------------------------------------------------
+#
+#  Decide which C++ version to use (Minimum/default: C++14)
+#
+#-----------------------------------------------------------------------------
 
-option(WITH_LZ4 "Build with lz4 support for PBF files" ON)
+if(NOT USE_CPP_VERSION)
+    set(USE_CPP_VERSION 14)
+endif()
+message(STATUS "Use C++ version: ${USE_CPP_VERSION}")
+
+set(CMAKE_CXX_STANDARD ${USE_CPP_VERSION})
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
 
 
 #-----------------------------------------------------------------------------
@@ -27,6 +40,8 @@ option(WITH_LZ4 "Build with lz4 support for PBF files" ON)
 #
 #-----------------------------------------------------------------------------
 
+option(WITH_LZ4 "Build with lz4 support for PBF files" ON)
+
 include_directories(include)
 
 find_package(Osmium 2.16.0 COMPONENTS io gdal)
@@ -58,23 +73,6 @@ if(MSVC)
 endif()
 
 
-#-----------------------------------------------------------------------------
-#
-#  Decide which C++ version to use (Minimum/default: C++14).
-#
-#-----------------------------------------------------------------------------
-if(NOT MSVC)
-    if(NOT USE_CPP_VERSION)
-        set(USE_CPP_VERSION c++14)
-    endif()
-    message(STATUS "Use C++ version: ${USE_CPP_VERSION}")
-    # following only available from cmake 2.8.12:
-    #   add_compile_options(-std=${USE_CPP_VERSION})
-    # so using this instead:
-    add_definitions(-std=${USE_CPP_VERSION})
-endif()
-
-
 #-----------------------------------------------------------------------------
 #
 #  Compiler and Linker flags
@@ -125,6 +123,10 @@ if(CMAKE_BUILD_TYPE STREQUAL "Dev")
     add_definitions(${OSMIUM_WARNING_OPTIONS})
 endif()
 
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+    add_definitions(-Wno-stringop-overread)
+endif()
+
 # Force RelWithDebInfo build type if none was given
 if(CMAKE_BUILD_TYPE)
     set(build_type ${CMAKE_BUILD_TYPE})
@@ -144,7 +146,7 @@ set(CMAKE_BUILD_TYPE ${build_type}
 #
 #-----------------------------------------------------------------------------
 message(STATUS "Looking for clang-tidy")
-find_program(CLANG_TIDY NAMES clang-tidy clang-tidy-20 clang-tidy-19 clang-tidy-18 clang-tidy-17 clang-tidy-16 clang-tidy-15 clang-tidy-14)
+find_program(CLANG_TIDY NAMES clang-tidy clang-tidy-22 clang-tidy-21 clang-tidy-20 clang-tidy-19 clang-tidy-18 clang-tidy-17 clang-tidy-16 clang-tidy-15)
 
 if(CLANG_TIDY)
     message(STATUS "Looking for clang-tidy - found ${CLANG_TIDY}")
@@ -183,7 +185,7 @@ if(CPPCHECK)
 
     add_custom_target(cppcheck
         ${CPPCHECK}
-        --std=c++14 ${CPPCHECK_OPTIONS}
+        --std=c++${USE_CPP_VERSION} ${CPPCHECK_OPTIONS}
         ${CPPCHECK_FILES}
     )
 else()


=====================================
man/manpage.template
=====================================
@@ -15,7 +15,7 @@ $endfor$
 $if(author)$
 .SH COPYRIGHT
 .PP
-Copyright (C) 2012\-2025 Jochen Topf <jochen at topf.org>.
+Copyright (C) 2012\-2026 Jochen Topf <jochen at topf.org>.
 License GPLv3+: GNU GPL version 3 or later
 <https://gnu.org/licenses/gpl.html>.
 This is free software: you are free to change and redistribute it.


=====================================
osmcoastline_readmeta
=====================================
@@ -16,7 +16,7 @@ fi
 
 if [[ $# -ge 1 && ( $1 == "--version" || $1 == "-v" ) ]]; then
     echo "osmcoastline_readmeta version $OSMCOASTLINE_VERSION"
-    echo "Copyright (C) 2012-2025  Jochen Topf <jochen at topf.org>"
+    echo "Copyright (C) 2012-2026  Jochen Topf <jochen at topf.org>"
     echo "License: GNU GENERAL PUBLIC LICENSE Version 3 <https://gnu.org/licenses/gpl.html>."
     echo "This is free software: you are free to change and redistribute it."
     echo "There is NO WARRANTY, to the extent permitted by law.";


=====================================
src/coastline_polygons.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -103,7 +103,9 @@ unsigned int CoastlinePolygons::fix_direction() {
                 assert(ir);
                 ir->reversePoints();
             }
-            m_output.add_error_line(make_unique_ptr_clone<OGRLineString>(er), "direction");
+            auto* ring = polygon->getExteriorRing()->clone();
+            auto ls = std::unique_ptr<OGRLineString>(OGRGeometryFactory::forceToLineString(ring)->toLineString());
+            m_output.add_error_line(std::move(ls), "direction");
             warnings++;
         }
     }
@@ -124,7 +126,7 @@ void CoastlinePolygons::split_geometry(std::unique_ptr<OGRGeometry>&& geom, int
     } else if (geom->getGeometryType() == wkbMultiPolygon) {
         const auto mp = static_cast_unique_ptr<OGRMultiPolygon>(std::move(geom));
         while (mp->getNumGeometries() > 0) {
-            std::unique_ptr<OGRPolygon> polygon{static_cast<OGRPolygon*>(mp->getGeometryRef(0))};
+            std::unique_ptr<OGRPolygon> polygon{mp->getGeometryRef(0)};
             mp->removeGeometry(0, false);
             polygon->assignSpatialReference(srs.out());
             split_polygon(std::move(polygon), level);
@@ -345,7 +347,7 @@ void CoastlinePolygons::split_bbox(const OGREnvelope& envelope, polygon_vector_t
                     case wkbMultiPolygon: {
                             auto mp = static_cast_unique_ptr<OGRMultiPolygon>(std::move(geom));
                             for (int i = mp->getNumGeometries() - 1; i >= 0; --i) {
-                                auto p = std::unique_ptr<OGRPolygon>(static_cast<OGRPolygon*>(mp->getGeometryRef(i)));
+                                auto p = std::unique_ptr<OGRPolygon>(mp->getGeometryRef(i));
                                 assert(p);
                                 mp->removeGeometry(i, FALSE);
                                 p->assignSpatialReference(mp->getSpatialReference());
@@ -426,7 +428,7 @@ void CoastlinePolygons::split_bbox(const OGREnvelope& envelope, polygon_vector_t
             const bool e2_intersects_e = e2.Intersects(polygon_envelope);
 
             if (e1_intersects_e && e2_intersects_e) {
-                v1.emplace_back(static_cast<OGRPolygon*>(polygon->clone()));
+                v1.emplace_back(polygon->clone());
                 v2.push_back(std::move(polygon));
             } else if (e1_intersects_e) {
                 v1.push_back(std::move(polygon));


=====================================
src/coastline_polygons.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/coastline_ring.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/coastline_ring.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/coastline_ring_collection.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -384,7 +384,7 @@ void CoastlineRingCollection::close_rings(OutputDatabase& output, bool debug, do
             m_fixed_rings++;
 
             CoastlineRing* e = eit->second->get();
-            CoastlineRing* s = sit->second->get();
+            const CoastlineRing* s = sit->second->get();
 
             output.add_error_point(e->ogr_last_point(), "fixed_end_point", e->last_node_id());
             output.add_error_point(s->ogr_first_point(), "fixed_end_point", s->first_node_id());


=====================================
src/coastline_ring_collection.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/nodegrid2opl.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/options.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -70,7 +70,7 @@ void print_version() {
     for (const auto& type : osmium::io::supported_pbf_compression_types()) {
         std::cout << " " << type;
     }
-    std::cout << "\n\nCopyright (C) 2012-2025  Jochen Topf <jochen at topf.org>\n"
+    std::cout << "\n\nCopyright (C) 2012-2026  Jochen Topf <jochen at topf.org>\n"
               << "License: GNU GENERAL PUBLIC LICENSE Version 3 <https://gnu.org/licenses/gpl.html>.\n"
               << "This is free software: you are free to change and redistribute it.\n"
               << "There is NO WARRANTY, to the extent permitted by law.\n";


=====================================
src/options.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/osmcoastline.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -90,7 +90,9 @@ void add_polygons_in_multi_to(polygon_vector_type *polygons,
         if (p->IsValid()) {
             polygons->push_back(std::move(p));
         } else {
-            output.add_error_line(make_unique_ptr_clone<OGRLineString>(p->getExteriorRing()), "invalid");
+            auto* ring = p->getExteriorRing()->clone();
+            auto ls = std::unique_ptr<OGRLineString>(OGRGeometryFactory::forceToLineString(ring)->toLineString());
+            output.add_error_line(std::move(ls), "invalid");
             std::unique_ptr<OGRGeometry> buf0{p->Buffer(0)};
             if (buf0 && buf0->getGeometryType() == wkbPolygon && buf0->IsValid()) {
                 buf0->assignSpatialReference(srs.wgs84());


=====================================
src/osmcoastline_filter.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -96,7 +96,7 @@ int main(int argc, char* argv[]) {
                 break;
             case 'V':
                 std::cout << "osmcoastline_filter " << get_osmcoastline_long_version() << " / " << get_libosmium_version() << '\n'
-                          << "Copyright (C) 2012-2025  Jochen Topf <jochen at topf.org>\n"
+                          << "Copyright (C) 2012-2026  Jochen Topf <jochen at topf.org>\n"
                           << "License: GNU GENERAL PUBLIC LICENSE Version 3 <https://gnu.org/licenses/gpl.html>.\n"
                           << "This is free software: you are free to change and redistribute it.\n"
                           << "There is NO WARRANTY, to the extent permitted by law.\n";


=====================================
src/osmcoastline_segments.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -152,7 +152,7 @@ int main(int argc, char *argv[]) {
             }
             case 'V':
                 std::cout << "osmcoastline_segments " << get_osmcoastline_long_version() << " / " << get_libosmium_version() << '\n'
-                          << "Copyright (C) 2012-2025  Jochen Topf <jochen at topf.org>\n"
+                          << "Copyright (C) 2012-2026  Jochen Topf <jochen at topf.org>\n"
                           << "License: GNU GENERAL PUBLIC LICENSE Version 3 <https://gnu.org/licenses/gpl.html>.\n"
                           << "This is free software: you are free to change and redistribute it.\n"
                           << "There is NO WARRANTY, to the extent permitted by law.\n";


=====================================
src/osmcoastline_ways.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -115,7 +115,7 @@ int main(int argc, char* argv[]) {
 
         if (!std::strcmp(argv[1], "--version") || !std::strcmp(argv[1], "-V")) {
             std::cout << "osmcoastline_ways " << get_osmcoastline_long_version() << " / " << get_libosmium_version() << '\n'
-                      << "Copyright (C) 2012-2025  Jochen Topf <jochen at topf.org>\n"
+                      << "Copyright (C) 2012-2026  Jochen Topf <jochen at topf.org>\n"
                       << "License: GNU GENERAL PUBLIC LICENSE Version 3 <https://gnu.org/licenses/gpl.html>.\n"
                       << "This is free software: you are free to change and redistribute it.\n"
                       << "There is NO WARRANTY, to the extent permitted by law.\n";


=====================================
src/output_database.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 
@@ -50,13 +50,13 @@ OutputDatabase::OutputDatabase(const std::string& driver, const std::string& out
     m_layer_water_polygons(m_dataset, "water_polygons", wkbPolygon, layer_options()),
     m_layer_lines(m_dataset, "lines", wkbLineString, layer_options()) {
 
-    m_layer_error_points.add_field("osm_id", OFTString, 10);
+    m_layer_error_points.add_field("osm_id", OFTInteger64, 1);
     m_layer_error_points.add_field("error", OFTString, 16);
 
-    m_layer_error_lines.add_field("osm_id", OFTString, 10);
+    m_layer_error_lines.add_field("osm_id", OFTInteger64, 1);
     m_layer_error_lines.add_field("error", OFTString, 16);
 
-    m_layer_rings.add_field("osm_id",  OFTString, 10);
+    m_layer_rings.add_field("osm_id",  OFTInteger64, 1);
     m_layer_rings.add_field("nways",   OFTInteger, 6);
     m_layer_rings.add_field("npoints", OFTInteger, 8);
     m_layer_rings.add_field("fixed",   OFTInteger, 1);
@@ -149,7 +149,7 @@ void OutputDatabase::commit() {
 void OutputDatabase::add_error_point(std::unique_ptr<OGRPoint>&& point, const char* error, osmium::object_id_type id) {
     m_srs.transform(point.get());
     gdalcpp::Feature feature{m_layer_error_points, std::move(point)};
-    feature.set_field("osm_id", std::to_string(id).c_str());
+    feature.set_field("osm_id", static_cast<GIntBig>(id));
     feature.set_field("error", error);
     feature.add_to_layer();
 }
@@ -157,7 +157,7 @@ void OutputDatabase::add_error_point(std::unique_ptr<OGRPoint>&& point, const ch
 void OutputDatabase::add_error_line(std::unique_ptr<OGRLineString>&& linestring, const char* error, osmium::object_id_type id) {
     m_srs.transform(linestring.get());
     gdalcpp::Feature feature{m_layer_error_lines, std::move(linestring)};
-    feature.set_field("osm_id", std::to_string(id).c_str());
+    feature.set_field("osm_id", static_cast<GIntBig>(id));
     feature.set_field("error", error);
     feature.add_to_layer();
 }
@@ -181,7 +181,7 @@ void OutputDatabase::add_ring(std::unique_ptr<OGRPolygon>&& polygon, osmium::obj
            function from the GEOS C interface to get to the reason.
         */
         GEOSContextHandle_t contextHandle = OGRGeometry::createGEOSContext();
-        char* r = GEOSisValidReason(polygon->exportToGEOS(contextHandle));
+        const char* const r = GEOSisValidReason(polygon->exportToGEOS(contextHandle));
         std::string reason = r ? r : "";
         OGRGeometry::freeGEOSContext(contextHandle);
 
@@ -211,7 +211,7 @@ void OutputDatabase::add_ring(std::unique_ptr<OGRPolygon>&& polygon, osmium::obj
     }
 
     gdalcpp::Feature feature{m_layer_rings, std::move(polygon)};
-    feature.set_field("osm_id", static_cast<int>(osm_id));
+    feature.set_field("osm_id", static_cast<GIntBig>(osm_id));
     feature.set_field("nways", static_cast<int>(nways));
     feature.set_field("npoints", static_cast<int>(npoints));
     feature.set_field("fixed", fixed);


=====================================
src/output_database.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/return_codes.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/srs.cpp
=====================================
@@ -1,6 +1,6 @@
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/srs.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/stats.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 


=====================================
src/util.hpp
=====================================
@@ -3,7 +3,7 @@
 
 /*
 
-  Copyright 2012-2025 Jochen Topf <jochen at topf.org>.
+  Copyright 2012-2026 Jochen Topf <jochen at topf.org>.
 
   This file is part of OSMCoastline.
 



View it on GitLab: https://salsa.debian.org/debian-gis-team/osmcoastline/-/commit/5b97075b55cb41622c67ae3a905ffe0d9a12c574

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/osmcoastline/-/commit/5b97075b55cb41622c67ae3a905ffe0d9a12c574
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20260118/a8fefb8d/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list