Comment 0 for bug 1244468

Revision history for this message
Charles Kerr (charlesk) wrote : GVariants leaked in service.vala's volume_changed()

The implicitly-created GVariant is leaked in Service's volume_changed() function. We can fix it by making the variant explicit. But, should this be reported upstream as a Vala bug?

One line diff:
- volume_action.set_state (volume);
+ volume_action.set_state (new Variant.double (volume));

C code generated from "volume_action.set_state (volume)":

  static GVariant* _variant_new4 (gdouble value) {
    return g_variant_ref_sink (g_variant_new_double (value));
  }
  static void indicator_sound_service_volume_changed (IndicatorSoundService* self, gdouble volume) {
    ...
    _tmp3_ = volume;
   _tmp4_ = _variant_new4 (_tmp3_);
    g_simple_action_set_state (volume_action, _tmp4_);
    ...
  }

C code generated from "volume_action.set_state (new Variant.double (volume))":

  static void indicator_sound_service_volume_changed (IndicatorSoundService* self, gdouble volume) {
    ...
    _tmp3_ = volume;
    _tmp4_ = g_variant_new_double (_tmp3_);
    g_variant_ref_sink (_tmp4_);
    _tmp5_ = _tmp4_;
    ...
    _g_variant_unref0 (_tmp5_);
    ...
  }