tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
klavaro: patch to fix invalid free
Will Dietz
3 years ago
09c7cf2f
65eed885
+73
2 changed files
expand all
collapse all
unified
split
pkgs
games
klavaro
default.nix
trans_lang_get_similar.patch
+2
pkgs/games/klavaro/default.nix
···
26
26
substituteInPlace src/tutor.c --replace '"espeak ' '"${espeak}/bin/espeak '
27
27
'';
28
28
29
29
+
patches = [ ./trans_lang_get_similar.patch ];
30
30
+
29
31
postInstall = ''
30
32
wrapProgram $out/bin/klavaro \
31
33
--prefix LD_LIBRARY_PATH : $out/lib
+71
pkgs/games/klavaro/trans_lang_get_similar.patch
···
1
1
+
--- a/src/translation.c (revision 137)
2
2
+
+++ b/src/translation.c (working copy)
3
3
+
@@ -257,23 +257,23 @@
4
4
+
* Private auxiliar function
5
5
+
*/
6
6
+
static gboolean
7
7
+
-trans_lang_get_similar (gchar * test)
8
8
+
+trans_lang_get_similar (gchar ** test)
9
9
+
{
10
10
+
gint i;
11
11
+
gchar aux_code_2[3];
12
12
+
13
13
+
/* Prefer C over en_GB for English variants other than en_GB. (Debian patch 02) */
14
14
+
- if (g_str_has_prefix (test, "en"))
15
15
+
+ if (g_str_has_prefix (*test, "en"))
16
16
+
{
17
17
+
- g_free (test);
18
18
+
- test = g_strdup ("C");
19
19
+
+ g_free (*test);
20
20
+
+ *test = g_strdup ("C");
21
21
+
return (TRUE);
22
22
+
}
23
23
+
24
24
+
- if (g_str_equal (test, "C"))
25
25
+
+ if (g_str_equal (*test, "C"))
26
26
+
return TRUE;
27
27
+
28
28
+
- strncpy (aux_code_2, test, 2);
29
29
+
+ strncpy (aux_code_2, *test, 2);
30
30
+
aux_code_2[2] = '\0';
31
31
+
32
32
+
for (i = 0; i < lang_num; i++)
33
33
+
@@ -280,15 +280,15 @@
34
34
+
{
35
35
+
if (strstr (lang[i].code, aux_code_2))
36
36
+
{
37
37
+
- g_free (test);
38
38
+
- test = g_strdup (lang[i].code);
39
39
+
+ g_free (*test);
40
40
+
+ *test = g_strdup (lang[i].code);
41
41
+
break;
42
42
+
}
43
43
+
}
44
44
+
- if (i == lang_num && g_str_has_prefix (test, "en"))
45
45
+
+ if (i == lang_num && g_str_has_prefix (*test, "en"))
46
46
+
{
47
47
+
- g_free (test);
48
48
+
- test = g_strdup ("C");
49
49
+
+ g_free (*test);
50
50
+
+ *test = g_strdup ("C");
51
51
+
return (TRUE);
52
52
+
}
53
53
+
return (i == lang_num ? FALSE : TRUE);
54
54
+
@@ -356,7 +356,7 @@
55
55
+
lang_ok = (i == 0 ? TRUE : FALSE);
56
56
+
break;
57
57
+
}
58
58
+
- lang_ok = trans_lang_get_similar (tmp_code);
59
59
+
+ lang_ok = trans_lang_get_similar (&tmp_code);
60
60
+
if (lang_ok == TRUE)
61
61
+
break;
62
62
+
g_free (tmp_code);
63
63
+
@@ -368,7 +368,7 @@
64
64
+
tmp_code = g_win32_getlocale ();
65
65
+
lang_ok = trans_lang_is_available (tmp_code);
66
66
+
if (lang_ok == FALSE)
67
67
+
- lang_ok = trans_lang_get_similar (tmp_code);
68
68
+
+ lang_ok = trans_lang_get_similar (&tmp_code);
69
69
+
#endif
70
70
+
}
71
71
+
if (tmp_code == NULL)