Re: [Vala] valac-0.12 incorrectly (?) copies array element before passing it to struct function



On Sat, Jul 16, 2011 at 08:51:28PM +0200, Alexander Kurtz wrote:
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!

Please report a bug.

-- 
http://www.debian.org - The Universal Operating System



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]