Array gets emptied if modified in function

Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=4537

Reported by @zino

Pike 7.7.45 from CVS as of a few hours ago:

% cat bug_array.pike
void fiddle(array a)
{
    a += ({ 2 });
}

void main()
{
    array a = ({});
    fiddle( a );
    if(!sizeof(a))
      werror("Array is broken: %O\n", a);
    else
      werror("Array is ok: %O\n", a);
}
% ~/bin/pike77-2/bin/pike bug_array.pike
Array is broken: ({ })

(Initially reported by Tim Johansson, Opera Software)