summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'gnome-extra/gnome-games/files/gnome-games-2.26.3-gtali-invalid-pointer.patch')
-rw-r--r--gnome-extra/gnome-games/files/gnome-games-2.26.3-gtali-invalid-pointer.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/gnome-extra/gnome-games/files/gnome-games-2.26.3-gtali-invalid-pointer.patch b/gnome-extra/gnome-games/files/gnome-games-2.26.3-gtali-invalid-pointer.patch
new file mode 100644
index 000000000000..20178765e4b8
--- /dev/null
+++ b/gnome-extra/gnome-games/files/gnome-games-2.26.3-gtali-invalid-pointer.patch
@@ -0,0 +1,26 @@
+Fix *** glibc detected *** gtali: free(): invalid pointer.
+
+This error happened in case where default players names was used,
+in yahtzee.c "Human" string is just marked by N_() to be translated later (runtime),
+but not really translated (so "Human" is assigned to DefaultPlayerNames[0]).
+In players[0].name the translated string is assigned ie _("Human").
+This implies that "if (players[0].name != DefaultPlayerNames[0])"
+is always true because _("Human") hasn't the same address as "Human".
+And we can't free a string allocated in .ro_data section.
+
+ gtali/setup.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/gtali/setup.c b/gtali/setup.c
+index eb16614..36f6e81 100644
+--- a/gtali/setup.c
++++ b/gtali/setup.c
+@@ -149,7 +149,7 @@ do_setup (GtkWidget * widget, gpointer data)
+ DisplayComputerThoughts = tmpDisplayComputerThoughts;
+
+ for (i = 0; i < MAX_NUMBER_OF_PLAYERS; i++) {
+- if (players[i].name != DefaultPlayerNames[i])
++ if (players[i].name != _(DefaultPlayerNames[i]))
+ g_free (players[i].name);
+ players[i].name =
+ g_strdup (gtk_entry_get_text (GTK_ENTRY (PlayerNames[i])));