On Wed, 2009-06-10 at 19:32 +0200, Jiří Zárevúcky wrote:
> Hello, I've noticed a strange thing about the "owned" keyword.
> 
> It works differently (and completely uselessly) on method parameters,
> then it does when assigning. I'm curious whether that's intentional.
> 
> It references the object in the call, and unreferences on the end of
> the method. I really don't see why anyone would want to do that, as
> weak parameter works exactly the same without the ref/unref overhead.
> Even if it was intentional, to ensure lifetime of the passed object,
> it would be IMHO better to reference it on the beginning of the
> method, not in the call (it could confuse C programmer using the
> class).
> 
> Anyway, I don't think it's wise to make the behavior different in
> those two cases.

The behavior is quite consistent. Passing a value as a method argument
corresponds to assigning the value to a local variable (=> ref), and the
end of the method body corresponds to the end of the scope of a local
variable (=> unref).

Anyway, owned parameters are not intended to be used in Vala code. The
main use case is to make it possible to bind C libraries with unusual
memory management requirements. And in those cases we really need the
current owned parameter semantics, everything else will either leak or
crash.

Jürg

_______________________________________________
Vala-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to