gentoo-ebuilds/sci-geosciences/grass/files/grass-8.4.1-fix-segfault.patch
Alfred Wingate b32ac5d0ff
sci-geosciences/grass: fix segfault if flexiblas used
Bug: https://bugs.gentoo.org/965293
Signed-off-by: Alfred Wingate <parona@protonmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/44664
Signed-off-by: Sam James <sam@gentoo.org>
2025-12-01 02:27:43 +00:00

99 lines
3.4 KiB
Diff

https://bugs.gentoo.org/965293
https://github.com/OSGeo/grass/issues/3731
https://github.com/OSGeo/grass/pull/6632
https://github.com/OSGeo/grass/commit/66c1733a055484761c1c25bdec937ebf0b31f00e
From 66c1733a055484761c1c25bdec937ebf0b31f00e Mon Sep 17 00:00:00 2001
From: Nicklas Larsson <n_larsson@yahoo.com>
Date: Mon, 17 Nov 2025 13:07:11 +0100
Subject: [PATCH] r.geomorphon: rename variable 'dirname' (#6632)
The name is conflicting with the namesake of POSIX's function,
causing segmentation fault on some systems.
Closes #3731
--- a/raster/r.geomorphon/local_proto.h
+++ b/raster/r.geomorphon/local_proto.h
@@ -86,7 +86,7 @@ const char *form_long_name(const FORMS);
/* pattern */
int calc_pattern(PATTERN *pattern, int row, int cur_row, int col, const int);
-extern const char *dirname[];
+extern const char *direction_name[];
/* geom */
void generate_ternary_codes(void);
--- a/raster/r.geomorphon/pattern.c
+++ b/raster/r.geomorphon/pattern.c
@@ -6,7 +6,8 @@
* 5|6|7 */
static int nextr[NUM_DIRS] = {-1, -1, -1, 0, 1, 1, 1, 0};
static int nextc[NUM_DIRS] = {1, 0, -1, -1, -1, 0, 1, 1};
-const char *dirname[NUM_DIRS] = {"NE", "N", "NW", "W", "SW", "S", "SE", "E"};
+const char *direction_name[NUM_DIRS] = {"NE", "N", "NW", "W",
+ "SW", "S", "SE", "E"};
/*
* A more thorough comparison using a few factors of different priority
@@ -125,7 +126,7 @@ int calc_pattern(PATTERN *pattern, int row, int cur_row, int col,
zenith_easting = nadir_easting = target_easting;
pattern->e[i] = cur_easting;
pattern->n[i] = cur_northing;
- prof_sso(dirname[i]);
+ prof_sso(direction_name[i]);
}
while (cur_distance < search_distance) {
if (cur_row + j * nextr[i] < 0 ||
--- a/raster/r.geomorphon/profile.c
+++ b/raster/r.geomorphon/profile.c
@@ -145,42 +145,42 @@ void prof_pattern(const double o_elevation, const PATTERN *p)
prof_sso("pattern");
for (i = 0; i < NUM_DIRS; i++)
- prof_int(dirname[i], p->pattern[i]);
+ prof_int(direction_name[i], p->pattern[i]);
prof_eso();
prof_sso("rel_elevation_m");
for (i = 0; i < NUM_DIRS; i++)
- prof_mtr(dirname[i], p->elevation[i]);
+ prof_mtr(direction_name[i], p->elevation[i]);
prof_eso();
prof_sso("abs_elevation_m");
for (i = 0; i < NUM_DIRS; i++)
- prof_mtr(dirname[i], o_elevation + p->elevation[i]);
+ prof_mtr(direction_name[i], o_elevation + p->elevation[i]);
prof_eso();
prof_sso("distance_m");
for (i = 0; i < NUM_DIRS; i++)
- prof_mtr(dirname[i], p->distance[i]);
+ prof_mtr(direction_name[i], p->distance[i]);
prof_eso();
prof_sso("offset_easting_m");
for (i = 0; i < NUM_DIRS; i++)
- prof_mtr(dirname[i], p->x[i]);
+ prof_mtr(direction_name[i], p->x[i]);
prof_eso();
prof_sso("offset_northing_m");
for (i = 0; i < NUM_DIRS; i++)
- prof_mtr(dirname[i], p->y[i]);
+ prof_mtr(direction_name[i], p->y[i]);
prof_eso();
prof_sso("easting");
for (i = 0; i < NUM_DIRS; i++)
- prof_dbl(dirname[i], p->e[i]);
+ prof_dbl(direction_name[i], p->e[i]);
prof_eso();
prof_sso("northing");
for (i = 0; i < NUM_DIRS; i++)
- prof_dbl(dirname[i], p->n[i]);
+ prof_dbl(direction_name[i], p->n[i]);
prof_eso();
}