diff --git a/compiler/cpp/src/thrift/generate/t_java_generator.cc b/compiler/cpp/src/thrift/generate/t_java_generator.cc index fb581e4..90dfa06 100644 --- a/compiler/cpp/src/thrift/generate/t_java_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_java_generator.cc @@ -4657,8 +4657,9 @@ void t_java_generator::generate_deep_copy_non_container(ofstream& out, std::string dest_name, t_type* type) { (void)dest_name; + type = get_true_type(type); if (type->is_base_type() || type->is_enum() || type->is_typedef()) { - if (((t_base_type*)type)->is_binary()) { + if (type->is_binary()) { out << "org.apache.thrift.TBaseHelper.copyBinary(" << source_name << ")"; } else { // everything else can be copied directly diff --git a/compiler/cpp/src/thrift/parse/t_type.h b/compiler/cpp/src/thrift/parse/t_type.h index 30f8c1f7..3a6d1e04 100644 --- a/compiler/cpp/src/thrift/parse/t_type.h +++ b/compiler/cpp/src/thrift/parse/t_type.h @@ -47,6 +47,7 @@ public: virtual bool is_void() const { return false; } virtual bool is_base_type() const { return false; } virtual bool is_string() const { return false; } + virtual bool is_binary() const { return false; } virtual bool is_bool() const { return false; } virtual bool is_typedef() const { return false; } virtual bool is_enum() const { return false; }