[c_glib] Fix code generation for sets with typedef element types (#3285)
Resolve typedef to underlying type before checking is_base_type() in
generate_deserialize_set_element(), consistent with how
generate_deserialize_map_element() handles this case.
diff --git a/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
index 5cd4091..7f40b54 100644
--- a/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
+++ b/compiler/cpp/src/thrift/generate/t_c_glib_generator.cc
@@ -4310,10 +4310,12 @@
int error_ret) {
t_type* telem = tset->get_elem_type();
string elem = tmp("_elem");
- string telem_ptr = telem->is_string() || !telem->is_base_type() ? "" : "*";
declare_local_variable(out, telem, elem, true);
+ telem = get_true_type(telem);
+ string telem_ptr = telem->is_string() || !telem->is_base_type() ? "" : "*";
+
t_field felem(telem, telem_ptr + elem);
generate_deserialize_field(out, &felem, "", "", error_ret);