[vala] gvariant module: Fix memory leak when deserializing hashtables with gvariant
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] gvariant module: Fix memory leak when deserializing hashtables with gvariant
- Date: Sun, 15 Jun 2014 09:46:50 +0000 (UTC)
commit 0edb05ca26693d9a0b0fa1b4e547b58990ea0db4
Author: Luca Bruno <lucabru src gnome org>
Date: Sun Jun 15 11:36:56 2014 +0200
gvariant module: Fix memory leak when deserializing hashtables with gvariant
Fixes bug 698260
codegen/valagvariantmodule.vala | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/codegen/valagvariantmodule.vala b/codegen/valagvariantmodule.vala
index 8b08731..409940e 100644
--- a/codegen/valagvariantmodule.vala
+++ b/codegen/valagvariantmodule.vala
@@ -394,17 +394,26 @@ public class Vala.GVariantModule : GAsyncModule {
if (key_type.data_type == string_type.data_type) {
hash_table_new.add_argument (new CCodeIdentifier ("g_str_hash"));
hash_table_new.add_argument (new CCodeIdentifier ("g_str_equal"));
+ } else if (key_type.data_type == gvariant_type) {
+ hash_table_new.add_argument (new CCodeIdentifier ("g_variant_hash"));
+ hash_table_new.add_argument (new CCodeIdentifier ("g_variant_equal"));
} else {
hash_table_new.add_argument (new CCodeIdentifier ("g_direct_hash"));
hash_table_new.add_argument (new CCodeIdentifier ("g_direct_equal"));
}
+
if (key_type.data_type == string_type.data_type) {
hash_table_new.add_argument (new CCodeIdentifier ("g_free"));
+ } else if (key_type.data_type == gvariant_type) {
+ hash_table_new.add_argument (new CCodeCastExpression (new CCodeIdentifier
("g_variant_unref"), "GDestroyNotify"));
} else {
hash_table_new.add_argument (new CCodeIdentifier ("NULL"));
}
+
if (value_type.data_type == string_type.data_type) {
hash_table_new.add_argument (new CCodeIdentifier ("g_free"));
+ } else if (value_type.data_type == gvariant_type) {
+ hash_table_new.add_argument (new CCodeCastExpression (new CCodeIdentifier
("g_variant_unref"), "GDestroyNotify"));
} else {
hash_table_new.add_argument (new CCodeIdentifier ("NULL"));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]