I would guess, it's because you're assigning a weak reference (returned
by data_get) to a strong one. When doing so, vala will make a copy of
the object referred by the weak ref, which in this case means to copy an
array of unknown length. Vala assigns -1 to data_length1 (to mean
"undefined"), but unfortunately that causes an array of length
4294967295 to be allocated...
You can probably solve the problem by using
weak uchar[] data;
instead of
uchar data;
in your code.
regards
alberto
On Wed, 2009-05-20 at 17:44 +0200, Sebastian Spaeth wrote:
> I have created this evas.vapi function:
>
> [CCode (array_length = false)]
> [NoArrayLength]
> public weak uchar[] data_get( bool for_writing );
>
> (it is supposed to return a void* pointer which is still owned by the class)
> which translates into:
>
> data = (_tmp4_ = (_tmp3_ = evas_object_image_data_get
> (self->priv->barchart, TRUE), (_tmp3_ == NULL) ? ((gpointer) _tmp3_) :
> _vala_array_dup2 (_tmp3_, -1)), data_length1 = -1, data_size =
> data_length1, _tmp4_);
>
> which fails as:
>
> GLib-ERROR **: /build/buildd/glib2.0-2.20.1/glib/gmem.c:136: failed to
> allocate 4294967295 bytes
> aborting...
>
> Any clues as to what I am doing wrong?
>
> The C function definition is:
> void *evas_object_image_data_get(const Evas_Object *obj, Eina_Bool
> for_writing)
>
> spaetz
> _______________________________________________
> Vala-list mailing list
> [email protected]
> http://mail.gnome.org/mailman/listinfo/vala-list
>
> This email has been scanned for all viruses by the MessageLabs Email
> Security System.
--
Alberto Colombo, MSc
PhD student at Digital Imaging Research Centre
Kingston University, London
e-mail: [email protected]
phone: +44 (0)20 8547 8642
http://cism.kingston.ac.uk/people/details.php?AuthorID=925
This email has been scanned for all viruses by the MessageLabs Email
Security System.
_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list