Le lundi 09 mai 2005 Ã 21:36 +0200, Magnus WirstrÃm a Ãcrit :
> mÃndagen den 9 maj 2005 21.12 skrev Jean BrÃfort:
> > Le lundi 09 mai 2005 Ã 21:04 +0200, Magnus WirstrÃm a Ãcrit :
> > > Hi.
> > >
> > > I'm a newbie so please don't fry me :)
> > > I have a strange problem (at least i think it's strange ;) ). In my app i
> > > set up a gchar like this
> > >
> > >   gchar *post;
> > >
> > >   entry_widget = lookup_widget(GTK_WIDGET(button), "text_bolag");
> > >   buffer = gtk_entry_get_text(GTK_ENTRY(entry_widget));
> > >   strcpy(post,buffer);
> > >   memset(buffer,0,100);
> > >
> > > When i run it I get segmentation fault and the debugger tell me this
> > > error. post               (gchar *)0x12 <Address 0x12 out of bounds>
> > >
> > > What could generate a such runtime error ? I have no idea why i get this
> > > and it have been working before. I'm thankful for any suggestion.
> >
> > You are using an uninitialized pointer. You should use something as:
> > post = g_new (char, some_size);
> > before calling strcpy. BUT DON'T USE strcpy AT ALL, use strncpy to avoif
> > buffer overflow problems.
> 
> Thank you, that worked good ... should i do this with all my string to make 
> my 
> program safe ? or just gchar * ? Is it a good rule to always use g_new to set 
> up my strings ?
> And of course not forget to g_free() too.

You can also use static string :
gchar post[length];
Or directly use malloc, or any other allocation method.

Please, note that this list is not really the good place for such a
discussion. gtk-list would be much more appropriate, IMHO

_______________________________________________
gnome-devel-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-devel-list

Reply via email to