Is it a Vala Bug?

When I test this code, there's no problem at runtime:

using Gee;

class Container : Object
{
  public Gee.TreeMap<string,Object> map = new Gee.TreeMap<string,Object> ();
}
class Space : Object
{
  public string name { get; set; }
  public Space.named (string name) { this.name = name; }
}

class App : Object
{

  public static int main (string[] args)
  {
    var c = new Container ();
    var o1 = new Space.named ("Big");
    var o2 = new Space.named ("Small");
    c.map.set (o1.name, o1);
    c.map.set (o2.name, o2);
    foreach (Object o in c.map.values) {
      stdout.printf (@"VALUE: $(((Space) o).name)\n");
    }
    foreach (string k in c.map.keys) {
      stdout.printf (@"KEY: $(k) : VALUE: $(((Space) c.map.get
(k)).name)\n");
    }
    return 0;
  }
}


2013/11/11 Daniel Espinosa <[email protected]>

> Please tell me what is wrong!!!!
>
> I'm using a TreeMap as a container inside a class that need to be
> subclassed from other.
>
> My problem is when I try to run my program fails to try get values and its
> key.
>
> I'm using valac-0.20, even using 0.18.1.
>
> using Gee;
>
> class Base : Object
> {
>   public string name { get; set; }
> }
>
> class Manager<V> : Base
> {
>   private Gee.TreeMap<string,V> map = new Gee.TreeMap<string,V> ();
>   public new V get (string key)
>   {
>     return map.get (key);
>   }
>   public new void set (string key, V obj)
>   {
>     map.set (key, obj);
>   }
>   public Collection<V> values { owned get { return  map.values; } }
>   public Collection<string> keys { owned get { return  map.keys; } }
> }
>
> class Space : Object
> {
>   public string name { get; set; }
>   public Space.named (string name) { this.name = name; }
> }
>
> class User : Manager<Object> {}
>
> class App
> {
>   public static int main (string[] args)
>   {
>     var u = new User ();
>     var o1 = new Space.named ("Big");
>     var o2 = new Space.named ("Small");
>     u.set (o1.name, o1);
>     u.set (o2.name, o2);
>     foreach (Object o in u.values) {
>       stdout.printf (@"VALUE: $(((Space) o).name)\n");
>     }
>     foreach (string k in u.keys) {
>       stdout.printf (@"KEY: $(k) : VALUE: $(((Space) u.get (k)).name)\n");
>     }
>     return 0;
>   }
> }
>
> compiling using
> valac-0.20 --pkg gee-0.8 container-manager.vala
>
> and runnig gets corruption on keys and fails to get values:
>
> $ ./container-manager
> VALUE: Big
> VALUE: Small
>
> (process:29479): GLib-GObject-WARNING **: invalid unclassed pointer in
> cast to `Space'
>
> ** (process:29479): CRITICAL **: string_to_string: assertion `self !=
> NULL' failed
>
> (process:29479): GLib-GObject-CRITICAL **: g_object_unref: assertion
> `G_IS_OBJECT (object)' failed
>
> (process:29479): GLib-GObject-WARNING **: invalid uninstantiatable type
> `<invalid>' in cast to `Space'
>
> ** (process:29479): CRITICAL **: string_to_string: assertion `self !=
> NULL' failed
>
> (process:29479): GLib-GObject-CRITICAL **: g_object_unref: assertion
> `G_IS_OBJECT (object)' failed
>
> (process:29479): GLib-GObject-CRITICAL **: g_object_unref: assertion
> `G_IS_OBJECT (object)' failed
>
> (process:29479): GLib-GObject-CRITICAL **: g_object_unref: assertion
> `G_IS_OBJECT (object)' failed
> KEY: Big : VALUE: KEY: Small : VALUE:
>
> --
> Trabajar, la mejor arma para tu superación
> "de grano en grano, se hace la arena" (R) (en trámite, pero para los
> cuates: LIBRE)
>
> _______________________________________________
> libgee-list mailing list
> [email protected]
> https://mail.gnome.org/mailman/listinfo/libgee-list
>
>


-- 
Trabajar, la mejor arma para tu superación
"de grano en grano, se hace la arena" (R) (en trámite, pero para los
cuates: LIBRE)
_______________________________________________
libgee-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/libgee-list

Reply via email to