Skip to content

fix(Geometry): avoid segfault in NNSearch when dealing with nan-coord… - #1318

Merged
BotellaA merged 1 commit into
nextfrom
fix/nnsearch-segfault
Aug 12, 2026
Merged

fix(Geometry): avoid segfault in NNSearch when dealing with nan-coord…#1318
BotellaA merged 1 commit into
nextfrom
fix/nnsearch-segfault

Conversation

@panquez

@panquez panquez commented Aug 12, 2026

Copy link
Copy Markdown
Member

…inate points

@github-actions

Copy link
Copy Markdown
Contributor

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-tidy (v20.1.8) reports: 15 concern(s)
  • src/geode/geometry/nn_search.cpp:54:9: warning: [modernize-use-nodiscard]

    function 'point' should be marked [[nodiscard]]

       54 |         const Point< dimension >& point( const index_t index ) const
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:59:9: warning: [modernize-use-nodiscard]

    function 'nb_points' should be marked [[nodiscard]]

       59 |         index_t nb_points() const
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:64:9: warning: [modernize-use-nodiscard]

    function 'neighbors' should be marked [[nodiscard]]

       64 |         std::vector< index_t > neighbors(
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:81:9: warning: [modernize-use-nodiscard]

    function 'neighbors' should be marked [[nodiscard]]

       81 |         std::vector< index_t > neighbors( const Point< dimension >& point,
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:117:9: warning: [modernize-use-nodiscard]

    function 'nearest_vertices' should be marked [[nodiscard]]

      117 |         std::vector< index_t > nearest_vertices(
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:123:50: warning: [readability-container-data-pointer]

    'data' should be used for accessing the data pointer instead of taking the address of the 0-th element

      123 |                 &copy( point )[0], nb_neighbors, &results[0], &distances[0] );
          |                                                  ^~~~~~~~~~~
          |                                                  results.data()
  • src/geode/geometry/nn_search.cpp:123:63: warning: [readability-container-data-pointer]

    'data' should be used for accessing the data pointer instead of taking the address of the 0-th element

      123 |                 &copy( point )[0], nb_neighbors, &results[0], &distances[0] );
          |                                                               ^~~~~~~~~~~~~
          |                                                               distances.data()
  • src/geode/geometry/nn_search.cpp:129:9: warning: [modernize-use-nodiscard]

    function 'colocated_index_mapping' should be marked [[nodiscard]]

      129 |         typename geode::NNSearch< dimension >::ColocatedInfo
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:129:9: warning: [modernize-use-nodiscard]

    function 'colocated_index_mapping<geode::Frame<2>>' should be marked [[nodiscard]]

      129 |         typename geode::NNSearch< dimension >::ColocatedInfo
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:129:9: warning: [modernize-use-nodiscard]

    function 'colocated_index_mapping<geode::Frame<3>>' should be marked [[nodiscard]]

      129 |         typename geode::NNSearch< dimension >::ColocatedInfo
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:130:13: warning: [readability-function-cognitive-complexity]

    function 'colocated_index_mapping' has cognitive complexity of 16 (threshold 10)

      130 |             colocated_index_mapping(
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:139:17: note: nesting level increased to 1
      139 |                 [&epsilon, &mapping, &mutex, this]( index_t point_id ) {
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:140:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      140 |                     if( mapping[point_id] != NO_ID )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:147:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      147 |                     if( mapping[point_id] != NO_ID )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:151:21: note: +2, including nesting penalty of 1, nesting level increased to 2
      151 |                     for( const auto vertex_id : neighbor_vertices )
          |                     ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:153:25: note: +3, including nesting penalty of 2, nesting level increased to 3
      153 |                         if( mapping[vertex_id] == NO_ID )
          |                         ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:161:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      161 |             for( const auto point_id : Range{ nb_points } )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:169:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      169 |                 if( mapping[point_id] == point_id )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:177:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      177 |             for( const auto point_id : Range{ nb_points } )
          |             ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:179:17: note: +2, including nesting penalty of 1, nesting level increased to 2
      179 |                 if( mapping[point_id] == point_id )
          |                 ^
    /__w/OpenGeode/OpenGeode/src/geode/geometry/nn_search.cpp:186:13: note: +1, including nesting penalty of 0, nesting level increased to 1
      186 |             for( const auto point_id : Range{ nb_points } )
          |             ^
  • src/geode/geometry/nn_search.cpp:195:9: warning: [modernize-use-nodiscard]

    function 'copy' should be marked [[nodiscard]]

      195 |         std::array< double, dimension > copy(
          |         ^
          |         [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:198:13: warning: [cppcoreguidelines-pro-type-member-init]

    uninitialized record type: 'result'

      198 |             std::array< double, dimension > result;
          |             ^                                     
          |                                                   {}
  • src/geode/geometry/nn_search.cpp:209:13: warning: [modernize-use-nodiscard]

    function 'kdtree_get_point_count' should be marked [[nodiscard]]

      209 |             size_t kdtree_get_point_count() const
          |             ^
          |             [[nodiscard]] 
  • src/geode/geometry/nn_search.cpp:214:13: warning: [modernize-use-nodiscard]

    function 'kdtree_get_pt' should be marked [[nodiscard]]

      214 |             double kdtree_get_pt( size_t idx, size_t dim ) const
          |             ^
          |             [[nodiscard]] 

Have any feedback or feature suggestions? Share it here.

@BotellaA
BotellaA merged commit cbf1e65 into next Aug 12, 2026
23 checks passed
@BotellaA
BotellaA deleted the fix/nnsearch-segfault branch August 12, 2026 12:02
@BotellaA

Copy link
Copy Markdown
Member

🎉 This PR is included in version 17.4.6-rc.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@BotellaA

Copy link
Copy Markdown
Member

🎉 This PR is included in version 17.4.6 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants