hugin: cherrypick fix for segfault on empty XDG_DATA_DIR

Hugin segfaults if the environment variable XDG_DATA_DIR is unset
(rather than being the empty string).  Upstream has committed a fix
in edfddc6070ca6d4223d359fb4b38273a5aed2f2d but has not released it
(hugin releases are *very* infrequent).

Let's cherry-pick the fix since it might be a while before they
manage another release.
This commit is contained in:
Adam Joseph 2022-12-05 22:26:38 -08:00
parent 7b81ec9be5
commit ccdfaa8de7
2 changed files with 20 additions and 0 deletions

View File

@ -43,6 +43,12 @@ stdenv.mkDerivation rec {
sha256 = "sha256-BHrqin+keESzTvJ8GdO2l+hJOdyx/bvrLCBGIbZu6tk=";
};
patches = [
# committed upstream but unreleased:
# https://sourceforge.net/p/hugin/hugin/ci/edfddc6070ca6d4223d359fb4b38273a5aed2f2d
./dont-crash-if-XDG_DATA_DIRS-not-set-edfddc6070ca6d4223d359fb4b38273a5aed2f2d.patch
];
buildInputs = [
boost
cairo

View File

@ -0,0 +1,14 @@
--- a/src/hugin_base/hugin_utils/utils.cpp 2022-12-05 22:19:26.873574924 -0800
+++ b/src/hugin_base/hugin_utils/utils.cpp 2022-12-05 22:19:09.069575641 -0800
@@ -472,9 +472,9 @@
#else
#ifdef USE_XDG_DIRS
char *xdgDataDir = getenv("XDG_DATA_HOME");
- if (strlen(xdgDataDir) == 0)
+ if (xdgDataDir == NULL || strlen(xdgDataDir) == 0)
{
- // no XDG_DATA_HOME enviroment variable set
+ // no XDG_DATA_HOME enviroment variable set or empty variable
// use $HOME/.local/share instead
const std::string homeDir = GetHomeDir();
if (homeDir.empty())