Repository: thrift Updated Branches: refs/heads/master 546209c96 -> 008f42cb3
THRIFT-2684 c_glib: Improvements to map deserialization in generated code Patch: Simon South Project: http://git-wip-us.apache.org/repos/asf/thrift/repo Commit: http://git-wip-us.apache.org/repos/asf/thrift/commit/008f42cb Tree: http://git-wip-us.apache.org/repos/asf/thrift/tree/008f42cb Diff: http://git-wip-us.apache.org/repos/asf/thrift/diff/008f42cb Branch: refs/heads/master Commit: 008f42cb3846fdfbcdc85acfe129680fd51c2def Parents: 546209c Author: Roger Meier <[email protected]> Authored: Mon Sep 1 20:26:01 2014 +0200 Committer: Roger Meier <[email protected]> Committed: Mon Sep 1 20:26:01 2014 +0200 ---------------------------------------------------------------------- compiler/cpp/src/generate/t_c_glib_generator.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/thrift/blob/008f42cb/compiler/cpp/src/generate/t_c_glib_generator.cc ---------------------------------------------------------------------- diff --git a/compiler/cpp/src/generate/t_c_glib_generator.cc b/compiler/cpp/src/generate/t_c_glib_generator.cc index 61a5461..050463f 100644 --- a/compiler/cpp/src/generate/t_c_glib_generator.cc +++ b/compiler/cpp/src/generate/t_c_glib_generator.cc @@ -3423,8 +3423,11 @@ void t_c_glib_generator::declare_local_variable(ofstream &out, t_type *ttype, st string ptr = ttype->is_string() || !ttype->is_base_type() ? "" : "*"; if (ttype->is_map()) { + t_map *tmap = (t_map *)ttype; out << - indent() << tname << ptr << " " << name << " = g_hash_table_new (NULL, NULL);" << endl; + indent() << tname << ptr << " " << name << " = " << + generate_new_hash_from_type(tmap->get_key_type(), tmap->get_val_type()) << + endl; } else if (ttype->is_enum()) { out << indent() << tname << ptr << " " << name << ";" << endl; @@ -3540,7 +3543,7 @@ string t_c_glib_generator::generate_free_func_from_type (t_type * ttype) { case t_base_type::TYPE_I32: case t_base_type::TYPE_I64: case t_base_type::TYPE_DOUBLE: - return "NULL"; + return "g_free"; case t_base_type::TYPE_STRING: if (((t_base_type *) ttype)->is_binary()) { return "thrift_string_free"; @@ -3649,7 +3652,7 @@ string t_c_glib_generator::generate_cmp_func_from_type (t_type * ttype) { throw "compiler error: no hash table info for type"; } } else if (ttype->is_enum()) { - return "NULL"; + return "g_direct_equal"; } else if (ttype->is_container() || ttype->is_struct()) { return "g_direct_equal"; } else if (ttype->is_typedef()) {
