Re: [Vala] GObject.get() + struct in Vala is problematic
- From: Thomas Jollans <t jollybox de>
- To: vala-list gnome org
- Subject: Re: [Vala] GObject.get() + struct in Vala is problematic
- Date: Fri, 14 Sep 2012 20:23:10 +0200
On 09/14/2012 05:21 PM, Derek Dai wrote:
Hi:
For example,
Clutter.Color bg;
Clutter.Actor rect = new Clutter.Rectangle();
rect.get("background-color", out bg);
Since GObject.get() will return a copied Clutter.Color, the second
parameter must be a pointer to a Clutter.Color pointer (ClutterColor **).
But since you actually pass in a Clutter.Color pointer (ClutterColor *),
what you got is address filled in first 4 bytes of bg and memory leak, in
this example.
I tried this way
Clutter.Color * bg;
Clutter.Actor rect = new Clutter.Rectangle();
rect.get("background-color", out bg);
bg will point to returned Clutter.Color, but I don't know the right way to
free it.
While I'm a bit sceptical about your premise (I would have assumed that
g_object_get would simply copy the structure into memory you provide, as
in your original example - but I don't know a lot about GObject, or
clutter), this is how to free the memory, assuming g_object_new does
return a pointer to memory that you're responsible for:
delete bg;
In clutter-1.0.vapi, Clutter.Color has free() method, I can invoke
it like
bg->free();
But Vala code generator will copy it into another Clutter.Color (just like
another primitive types) which is on the stack and pass it to the
Clutter.Color.free(), eg.
ClutterColor * tmp5;
tmp5 = * bg;
clutter_color_free(& tmp5);
This causes glibc dumpping and aborting our process. I also tried free with
delete keyword, but with no luck, the generated C code simple free with
g_free()
g_free(bg);
Derek Dai
On Fri, Sep 14, 2012 at 8:00 PM, <vala-list-request gnome org> wrote:
eed to do
_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]