Hello,

   في ث، 08-03-2011 عند 02:49 +0000 ، كتب Pg Dr Hj Norjaidi bin Pg Tuah:
> The following code crashes when compiled with 0.11.6
> due to an attempt to deallocate the static string "bar"
> (https://bugzilla.gnome.org/show_bug.cgi?id=642350).
> 
>   struct Foo {
>       public string foo;
>       public string bar;
>   }
> 
>   void main() {
>      Foo f = Foo() {foo = "foo", bar = N_("bar")};
>   }
> 
> 
> As a work around, I change the struct strings to
> unowned. Thus:
> 
>   struct Foo {
>       public unowned string foo; 
>       public unowned string bar;
>   }
> 
> 
> That seems to work. But I'm apprehensive here.
> Is my workaround safe? Am I abusing "unowned"?

I'd say you should just take care, your "workaround" is not inherently
unsafe, and isn't really an abuse (I'd call that aggressive
optimisation). You should make sure that the strings you assign to these
fields aren't going to be freed somewhere else. For example, if they are
always static strings, you should be fine.

HTH,
Abderrahim

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

Reply via email to