El jue, 26 de 02 de 2004 a las 14:15, Bryan Brown escribiÃ:
Hello, My application (built using gtk 2.x under Redhat 9) sets up a file selection dialog, waits for the user to select a file, then tries to read the specified file into a pixbuf. It's abending with a segmentation fault when it calls gdk_pixbuf_new_from_file, the user having selected a standard png-formatted picture file.
Could you provide a backtrace? Just the first 20 lines. It could help us to track the problem.
Here's a snippet of the relevant code:
===== begin code snip =====
GtkWidget *file_selector;
gchar *filename;
[snip]
void
on_read_ok_button_clicked (GtkButton *button,
gpointer user_data)
{
gchar filename_local[BUFLEN] = "\0";
GError *error;
GdkPixbuf *pixbuf = NULL;
[snip]
filename = (gchar *) gtk_file_selection_get_filename (
GTK_FILE_SELECTION (file_selector));
[snip length checking]
strcpy (filename_local, filename);
gtk_widget_destroy (file_selector);
pixbuf = gdk_pixbuf_new_from_file (filename_local,
&error);
Nothing to do with your segfault, but could be much better and safer if
you use g_strdup() instead of strcpy. With strcopy you must provide a
buffer big enought to store the string and with g_strdup you avoid this
kind of failures.
gchar *filename_local;
GError *error;
GdkPixbuf *pixbuf = NULL;
[snip]
filename = (gchar *) gtk_file_selection_get_filename (
GTK_FILE_SELECTION (file_selector));
[snip length checking] <- not needed anymore
filename_local = g_strdup(filename);
gtk_widget_destroy (file_selector);
pixbuf = gdk_pixbuf_new_from_file (filename_local,
&error);
g_free( filename_local );
[snip]
regards
--
Iago Rubio http://www.iagorubio.com
GPGkey pgp.rediris.es id 0x909BD4DD fingerprint =
D18A B950 5F03 BB9A DD89 AA75 FEDF 1978 909B D4DD
********** iago.rubio(AT)hispalinux.es **********
--------------------------------------------------
Attachment:
signature.asc
Description: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada digitalmente