Hi,

Seem you did not read my reply clearly. I told you the behaviour of
g_list_append() and g_list_last() there.
Okay, so your question is (

"So, why g_list_append() dont' return me newly created list???"

If you pass NULL pointer to first arg of g_list_append() it will
returns a newly created list for you, save the address to the return
pointer. If you pass non NULL pointer (already created list) to first
arg of g_list_append() it will ALWAYS return the HEAD of the list and
will not create a new list.

It's better for you to read GList implementation source code.
(glist.c) to fully understand how it work.

Regards.


On Thu, Aug 16, 2012 at 2:08 AM, Vlasov Vitaly <vnig...@gmail.com> wrote:
> Hello
> Thanks for answer.
>
>         > Did you mean Last list element: 0x832c610 is differ from INIT list
>> prt: 0x830f080?
>  No.
>
> Lest's see...
> i got function "do_work" with:
>         1. new Glist init with random data
>         2. callback definition of button click: button_click(...., GList 
> *list)
> let init list poiner = 0xfe
> button was clicked!
> Here button_click(GList *list)
>         list in agrs = 0xfe
>         new data record memory allocation.
>         !!! g_list_append(data, list) !!!
>         In my example it returns init list value (0xfe), but should returns 
> value
> of newly created list (0x832c610 in example).
>
>         In example:
>                 INIT list prt: 0x830f080 - this is init list, which passed to
> button_callback
>                 In button callback:
>                 Created: 0x830f080, arg: 0x830f080 - first ptr is returned 
> list from
> g_list_append(), but it equal to init list. WTF??? HOW?? I need newly created
> list here...
>                 And i check added value with g_list_last(). It's equal 
> 0x832c610 and
> correct.
>
> So, why g_list_append() dont' return me newly created list???
>
> В сообщении от Среда 15 августа 2012 09:33:04 вы написали:
>> Hi,
>>
>> > In button_cb()...
>>
>> Did you mean Last list element: 0x832c610 is differ from INIT list
>> prt: 0x830f080?
>>
>> It's clear because  0x830f080 was the location of first list and
>> 0x832c610 is the last appended list.
>> g_list_prepend() return to the start of the list, g_list_last() return
>> the last of the list (address).
>>
>> > in test_glist()
>>
>> First you call temp = g_list_insert(test, ...), test = NULL, save the
>> list to temp pointer to GList,
>> second, you call temp = g_list_append(test, ...), nothing wrong with
>> that code! BUT if you suppose to insert 2nd list here, then you are
>> wrong. Because, test is STILL NULL. It returns the newly allocated
>> list again, that's why it's differ. You should call call temp =
>> g_list_append(temp,...) or to insert the next list.
>>
>> > In real program, i need to get newly created list pointer in function
>> > like button_cb(), but don't know how to do it.
>>
>> Just pass it through callback's argument or declare it as global variable.
>>
>> On Wed, Aug 15, 2012 at 8:04 AM, Vlasov Vitaly <vnig...@gmail.com> wrote:
>> > Hi, list.
>> >
>> >         I can't understand, why g_list_append return different values in
>> >         my
>> >
>> > callback's(please read source). In first case i got same list, which was
>> > obtained from arguments. In second case g_list_append returns newly
>> > created list.
>> > Why result's is are not the same?
>> >
>> > In real program, i need to get newly created list pointer in function
>> > like button_cb(), but don't know how to do it.
>> >
>> > source: http://pastebin.com/4gMREKwd
>> >
>> > output on my laptop:
>> > INIT list prt: 0x830f080
>> > Created: 0x830f080, arg: 0x830f080
>> > Last list element: 0x832c610
>> > Init list ptr: 0x832c5c0
>> > Second list ptr: 0x830f120
>> > End
>> > _______________________________________________
>> > gtk-app-devel-list mailing list
>> > gtk-app-devel-list@gnome.org
>> > https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to