diff options
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.patch | 26 |
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]))); |