Mike Massonnet píše v Út 27. 04. 2010 v 18:11 +0200:
> 2010/4/27 Sam Wilson <[email protected]>:
> > On Tue, 2010-04-27 at 10:46 -0300, Jonh Wendell wrote:
> >> Hi, folks. I wrote a simple singleton:
> >>
> >> public class Prefs {
> >>   private static Prefs instance;
> >>
> >>   public static Prefs default() {
> >>     if (instance == null)
> >>       instance = new Prefs ();
> >>
> >>     return instance;
> >>   }
> >>
> 
>                 public static unowned Preferences get_default () {
>                         if (preferences == null) {
>                                 preferences = new Preferences ();
>                                 preferences.add_weak_pointer (&preferences);
>                         }
>                         else
>                                 preferences.ref ();
> 
>                         return preferences;
>                 }
> 
> [...]
> 
> [0] http://git.xfce.org/apps/xfmpc/tree/src/preferences.vala
> 
> Regards
> Mike

I took the liberty of checking out your code (hope you don't mind) and I
believe you're using it quite wrong.
Your 'preferences' variable is still a strong reference, so it is never
freed. 'add_weak_pointer' only makes sense for pure pointer or an
unowned variable. Also, manually using .ref() method only makes sense if
you work with pure pointers, otherwise it messes up Vala's automatic
refcounting.

Check out my reply to the original message to see how it can be done
correctly (unless I made some terrible mistake, which I hope I
didn't). :)

Attachment: signature.asc
Description: Toto je digitálně podepsaná část zprávy

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

Reply via email to