From 29adfa4a9c98b53c3b5d9050a5538d040b0e5b1c Mon Sep 17 00:00:00 2001 From: Eivind Jahren Date: Tue, 23 Apr 2024 11:41:22 +0200 Subject: [PATCH] Fix segfault in get_global_index1F Co-authored-by: Zohar Malamant --- lib/resdata/rd_grid.cpp | 3 +++ python/resdata/grid/rd_grid.py | 7 ++++++- python/tests/rd_tests/test_grid.py | 1 + 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/resdata/rd_grid.cpp b/lib/resdata/rd_grid.cpp index 1c81aa09b..6bafbd491 100644 --- a/lib/resdata/rd_grid.cpp +++ b/lib/resdata/rd_grid.cpp @@ -4752,6 +4752,9 @@ int rd_grid_get_global_index1A(const rd_grid_type *rd_grid, int active_index) { int rd_grid_get_global_index1F(const rd_grid_type *rd_grid, int active_fracture_index) { + if (rd_grid->inv_fracture_index_map == NULL || + active_fracture_index >= rd_grid->total_active_fracture) + return -1; return rd_grid->inv_fracture_index_map[active_fracture_index]; } diff --git a/python/resdata/grid/rd_grid.py b/python/resdata/grid/rd_grid.py index b1472c55c..c11a47de3 100644 --- a/python/resdata/grid/rd_grid.py +++ b/python/resdata/grid/rd_grid.py @@ -581,8 +581,13 @@ def get_active_fracture_index(self, ijk=None, global_index=None): def get_global_index1F(self, active_fracture_index): """ Will return the global index corresponding to active fracture index. + + Returns None if there is no active_fracture with that index """ - return self._get_global_index1F(active_fracture_index) + result = self._get_global_index1F(active_fracture_index) + if result == -1: + return None + return result def cell_invalid(self, ijk=None, global_index=None, active_index=None): """ diff --git a/python/tests/rd_tests/test_grid.py b/python/tests/rd_tests/test_grid.py index 7b20b9045..d360254a1 100644 --- a/python/tests/rd_tests/test_grid.py +++ b/python/tests/rd_tests/test_grid.py @@ -222,6 +222,7 @@ def test_posXYEdge(self): def test_dims(self): grid = GridGen.createRectangular((10, 20, 30), (1, 1, 1)) + self.assertEqual(grid.get_global_index1F(0), None) self.assertEqual(grid.getNX(), 10) self.assertEqual(grid.getNY(), 20) self.assertEqual(grid.getNZ(), 30)