Yes. It is a bug. Please report it :)

Btw.. When are the opened bugs going to be reviewed and commited? I can count 
many ready-to-commit bugreports.

On 02/03/2011, at 12:21, Graham Whelan <[email protected]> wrote:

> On 1 March 2011 19:58, Graham Whelan <[email protected]> wrote:
>> On 1 March 2011 18:29, Jürg Billeter <[email protected]> wrote:
>>> On Tue, 2011-03-01 at 18:21 +0000, Graham Whelan wrote:
>>>> I'm trying to copy a file using GLib.InputStream and GLib.OutputStream
>>>> but the copied file ends up corrupted.
>>>> 
>>>> Sample code:
>>>> 
>>>> uint8 buffer[4096];
>>>> size_t read;
>>>> while (true) {
>>>>       read = input.read (buffer);
>>>>       if (read > 0) {
>>>>               output.write (buffer);
>>> 
>>> This should work with slicing:
>>> 
>>>    output.write (buffer[0:read]);
>>> 
>>> Jürg
>>> 
>>> 
>> 
>> Thanks for the quick response.
>> 
>> I've just tried your suggestion with valac 0.11.5 and 0.11.6 but it
>> doesn't work. Looking at the generated C code, Vala is still passing
>> the full length of the array and not the length of the slice.
>> 
>> So:
>> output.write (buffer[0:read]);
>> 
>> becomes:
>> g_output_stream_write ((GOutputStream*) output, buffer + 0, (gsize)
>> 4096, NULL, &_inner_error_);
>> 
>> Graham
>> 
> 
> I've managed to get this to work by using a variable rather than
> fixed-size array.
> The sample code becomes:
>        
> uint8[] buffer = new uint8[4096];
> size_t read;
> while(true) {
>    read = input.read(buffer);
>    if (read > 0) {
>        output.write (buffer[0:read]);
>    } else {
>        break;
>    }
> }
> 
> With a fixed-size array the slice operation doesn't work. Is this a bug?
> 
> Thanks for the help,
> 
> Graham
> _______________________________________________
> vala-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/vala-list
_______________________________________________
vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to