=?ISO-8859-1?Q?Re:_Bug_in_GLib, _libglade, _libc=3F?= =?ISO-8859-1?Q?=3F_(ok, _it=B4s_not_GTK_specific...)?=
- From: "Samuel Cormier-Iijima" <sciyoshi gmail com>
- To: "Fabricio Rocha" <rocha_fabricio yahoo com br>
- Cc: gtk-app-devel-list gnome org
- Subject: Re: Bug in GLib, libglade, libc?? (ok, it´s not GTK specific...)
- Date: Tue, 15 Aug 2006 23:35:30 -0500
OK,
Your pointer code is all screwed up :-) g_strdup already allocates
memory so you don't need to do g_malloc before it, just
g_strdup_printf right into your variable. Also, your getting a
segfault because you're dereferencing the pointer where the pointer
itself is expected (when setting GtkEntry for example). Try dropping
the * and see if that works.
Samuel
On 8/15/06, Fabricio Rocha <rocha_fabricio yahoo com br> wrote:
Hello, guys!
Sorry, I know i´m crossing the borders of off-topic. But I had to tell
you that I could get rid of SEGFAULTs by using a GPtrArray* as member of
my structure. As said before, this struct member shall hold one or more
strings. (John, I have tried using a GList as this member, but I could
not get it working as well. Maybe it was a erroneus attempt, however).
I just got curious about WHAT is the "magic" in GPtrArray that I could
not "reproduce" using a gchar** variable. Man, I REALLY tried it, but
you masters should be able to explain... My last attempt was that: the
struct variable is called "var", the list of strings is the member
"values". So, var->values was recognised by GDB as "gchar*[0]", and
*var->values was recognised as "gchar*". You will probably find it very
naive and exaggerated, but just realise the desperation:
-------------------------
gchar *valuearea;
gchar *tempvalue;
VarInfo newvar;
tempvalue = g_strdup_printf ("variable%i",++varscount);
valuearea = (gchar*)g_malloc ((gulong)strlen(tempvalue));
valuearea = g_strdup (tempvalue);
newvar.name = valuearea;
(...)
valuearea = (gchar*) g_malloc (strlen(tempvalue=g_strdup("0")));
valuearea = g_strdup(tempvalue);
*newvar.values = valuearea;
newvar.parentvar = NULL;
var = g_malloc ((gulong)sizeof(newvar));
var = memcpy ((VarInfo*)var, (VarInfo*)&newvar, sizeof(newvar));
-----------------------
I still don´t know what the hell I did wrong. Later in the code, I
could access and use correctly "var->name", but I would get SEGFAULT in
a line that a tried to set the text of a GtkEntry to *(var->values). GDB
would tell me that it couldn´t access address 0x11 (TOO low address
indeed). What was wrong there, gurus??
By the way, I´m pretty happy that it´s working fine with GPtrArray. But
I can´t stop itching my head until I found out what I was doing wrong.... :)
Thank you all, very much!
Fabricio Rocha
Brasilia, Brasil
_______________________________________________________
Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular. Registre seu aparelho agora!
http://br.mobile.yahoo.com/mailalertas/
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list gnome org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]