Re: more on g_strconcat problem
- From: Andreas Kostyrka <andreas mtg co at>
- To: gtk-list gnome org
- Subject: Re: more on g_strconcat problem
- Date: Thu, 27 Nov 2003 10:08:01 +0100
On Wed, Nov 26, 2003 at 09:30:40PM -0800, Carl B. Constantine wrote:
> Ok, I've definately nailed the problem down to an issue with the check
> button in my data entry box. But it still doesn't make sense. consider
> the following code:
>
> idRequired = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(lookup_widget(customers, "cust_id_req")));
> g_print("ID Required status: %d\n", idRequired);
>
> toggleTest = (gint)idRequired;
> g_print("ID Required status: %d\n", toggleTest);
>
> the above code prints 0 if the checkbox is unchecked and 1 if it is
> checked.
>
> With that in mind, consider the following additional code:
>
> sql = g_strconcat("insert into customers (id_req) values('", toggleTest, "')",0L);
>
> g_print("First sql: %s\n",sql);
>
> This code prints the following when the checkbox is unchecked:
>
> insert into customers (id_req) values('
>
> so it doesn't even complete the string. That same code crashes with a
> segfault 11 if I check the checkbox in the dialog.
>
> This makes absolutely NO sense what so ever!
Well, this seems to make much sense, could it be, that you are passing an
Integer into g_strconcat?
Try this:
char *helper;
if(toogleTest)
helper = "YES";
else
helper = "NO";
sql = g_strconcat("insert into customers (id_req) values('", helper, "')",0L);
Basically, in the unchecked case, you are passing 0, which is interpreted as
the end of arguments, which makes g_strconcat ignore all further arguments.
In the toogleTest == 1 case, it's interpreted as an char pointer, and accessing
the address "1" is a relative safe way to segfault an app ;)
Andreas Kostyrka
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]