(psppire_variable_sheet_create): Use xstrdup to save string returned
authorBen Pfaff <blp@gnu.org>
Tue, 11 Sep 2007 03:12:34 +0000 (03:12 +0000)
committerBen Pfaff <blp@gnu.org>
Tue, 11 Sep 2007 03:12:34 +0000 (03:12 +0000)
by bind_textdomain_codeset.  Otherwise it can get freed by a
subsequent call.  Patch #6193.  Reviewed by John Darrington.

src/ui/gui/ChangeLog
src/ui/gui/var-sheet.c

index 6238e0f7c7dac427601b3c7a41b0d2eb0c003794..6c36b520ae0b5832c3aee48daa6b3bc6a4c74495 100644 (file)
@@ -1,3 +1,10 @@
+2007-09-10  Ben Pfaff  <blp@gnu.org>
+
+       * var-sheet.c (psppire_variable_sheet_create): Use xstrdup to save
+       string returned by bind_textdomain_codeset.  Otherwise it can get
+       freed by a subsequent call.  Patch #6193.  Reviewed by John
+       Darrington.
+
 2007-09-06  John Darrington <john@darrington.wattle.id.au>
        
        * helper.c helper.h (execute_syntax): changed return type to 
index b57cdb576e902d91380a0ca7ac6ace2dc59d5298..97ab89cb35b0876921aa82fa69a557506afe13db 100644 (file)
@@ -38,6 +38,7 @@
 #include <gtksheet/gsheet-uniform-row.h>
 
 #include "localcharset.h"
+#include "xalloc.h"
 #include "psppire-var-store.h"
 #include "helper.h"
 #include "psppire-dict.h"
@@ -455,7 +456,7 @@ psppire_variable_sheet_create (gchar *widget_name,
 
   /* Since this happens inside glade_xml_new, we must prevent strings from
    * being re-encoded twice */
-  codeset = bind_textdomain_codeset (PACKAGE, 0);
+  codeset = xstrdup (bind_textdomain_codeset (PACKAGE, 0));
   bind_textdomain_codeset (PACKAGE, locale_charset ());
 
   for (i = 0 ; i < n_COLS ; ++i )
@@ -468,6 +469,7 @@ psppire_variable_sheet_create (gchar *widget_name,
     }
 
   bind_textdomain_codeset (PACKAGE, codeset);
+  free (codeset);
 
   gtk_widget_show (sheet);