Hi, if you compile and run the attached trivial test program, this will be the output: $ ./test element.data = 42, array[23].data = 0 $ If you look at the intermediate C-code, it's clear what happens: 70 foo_bar (&element); 71 _tmp2_ = array[23]; 72 foo_bar (&_tmp2_); 73 fprintf (stdout, "element.data = %d, array[23].data = %d\n", element.data, array[23].data); So while a single variable will be directly passed (by reference) to the modifying function, an element of an array will first be copied to a temporary variable and a reference to that temporary variable will be passed along. Since only the temporary variable will be modified this won't have any affect on the array. Unless this is the intended behavior, I think vala shouldn't copy structs before passing them to some function when they are elements of an array. At the very least, the behavior should be consistent regardless whether it's an array of structs or a single struct. If this is already fixed or if I'm just too stupid to write correct code, just tell me so! Best regards Alexander Kurtz
Attachment:
test.vala
Description: Text Data
Attachment:
test.c
Description: Text Data
Attachment:
signature.asc
Description: This is a digitally signed message part