diff options
author | Will Dietz <w@wdtz.org> | 2022-03-13 21:43:03 -0500 |
---|---|---|
committer | Will Dietz <w@wdtz.org> | 2022-03-13 22:39:35 -0500 |
commit | 09c7cf2f4ecc1665b58002bb9683ba00fbc559cd (patch) | |
tree | 357e363e96fc14f27e7246ea149acd7911102bd1 /pkgs/games | |
parent | 65eed885d636e74eb3349b3aacee5e945a99f092 (diff) | |
download | nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar.gz nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar.bz2 nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar.lz nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar.xz nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.tar.zst nixpkgs-09c7cf2f4ecc1665b58002bb9683ba00fbc559cd.zip |
klavaro: patch to fix invalid free
Diffstat (limited to 'pkgs/games')
-rw-r--r-- | pkgs/games/klavaro/default.nix | 2 | ||||
-rw-r--r-- | pkgs/games/klavaro/trans_lang_get_similar.patch | 71 |
2 files changed, 73 insertions, 0 deletions
diff --git a/pkgs/games/klavaro/default.nix b/pkgs/games/klavaro/default.nix index 25bfb4daee2..ec00b8308de 100644 --- a/pkgs/games/klavaro/default.nix +++ b/pkgs/games/klavaro/default.nix @@ -26,6 +26,8 @@ stdenv.mkDerivation rec { substituteInPlace src/tutor.c --replace '"espeak ' '"${espeak}/bin/espeak ' ''; + patches = [ ./trans_lang_get_similar.patch ]; + postInstall = '' wrapProgram $out/bin/klavaro \ --prefix LD_LIBRARY_PATH : $out/lib diff --git a/pkgs/games/klavaro/trans_lang_get_similar.patch b/pkgs/games/klavaro/trans_lang_get_similar.patch new file mode 100644 index 00000000000..3b6644c5f7f --- /dev/null +++ b/pkgs/games/klavaro/trans_lang_get_similar.patch @@ -0,0 +1,71 @@ +--- a/src/translation.c (revision 137) ++++ b/src/translation.c (working copy) +@@ -257,23 +257,23 @@ + * Private auxiliar function + */ + static gboolean +-trans_lang_get_similar (gchar * test) ++trans_lang_get_similar (gchar ** test) + { + gint i; + gchar aux_code_2[3]; + + /* Prefer C over en_GB for English variants other than en_GB. (Debian patch 02) */ +- if (g_str_has_prefix (test, "en")) ++ if (g_str_has_prefix (*test, "en")) + { +- g_free (test); +- test = g_strdup ("C"); ++ g_free (*test); ++ *test = g_strdup ("C"); + return (TRUE); + } + +- if (g_str_equal (test, "C")) ++ if (g_str_equal (*test, "C")) + return TRUE; + +- strncpy (aux_code_2, test, 2); ++ strncpy (aux_code_2, *test, 2); + aux_code_2[2] = '\0'; + + for (i = 0; i < lang_num; i++) +@@ -280,15 +280,15 @@ + { + if (strstr (lang[i].code, aux_code_2)) + { +- g_free (test); +- test = g_strdup (lang[i].code); ++ g_free (*test); ++ *test = g_strdup (lang[i].code); + break; + } + } +- if (i == lang_num && g_str_has_prefix (test, "en")) ++ if (i == lang_num && g_str_has_prefix (*test, "en")) + { +- g_free (test); +- test = g_strdup ("C"); ++ g_free (*test); ++ *test = g_strdup ("C"); + return (TRUE); + } + return (i == lang_num ? FALSE : TRUE); +@@ -356,7 +356,7 @@ + lang_ok = (i == 0 ? TRUE : FALSE); + break; + } +- lang_ok = trans_lang_get_similar (tmp_code); ++ lang_ok = trans_lang_get_similar (&tmp_code); + if (lang_ok == TRUE) + break; + g_free (tmp_code); +@@ -368,7 +368,7 @@ + tmp_code = g_win32_getlocale (); + lang_ok = trans_lang_is_available (tmp_code); + if (lang_ok == FALSE) +- lang_ok = trans_lang_get_similar (tmp_code); ++ lang_ok = trans_lang_get_similar (&tmp_code); + #endif + } + if (tmp_code == NULL) |