@@ -842,32 +842,33 @@ class CCPPDSUtils {
842842 + struct_type_str + " * src, "
843843 + struct_type_str + " * dest)" ;
844844 func_decls += " inline " + signature + " ;\n " ;
845- generated_code + = indent + signature + " {\n " ;
845+ std::string tmp_generated = indent + signature + " {\n " ;
846846 for (size_t i=0 ; i < struct_type_t ->n_members ; i++) {
847847 std::string mem_name = std::string (struct_type_t ->m_members [i]);
848848 ASR::symbol_t * member = struct_type_t ->m_symtab ->get_symbol (mem_name);
849849 ASR::ttype_t * member_type_asr = ASRUtils::symbol_type (member);
850850 if ( CUtils::is_non_primitive_DT (member_type_asr) ||
851851 ASR::is_a<ASR::Character_t>(*member_type_asr) ) {
852- generated_code += indent + tab + get_deepcopy (member_type_asr, " &(src->" + mem_name + " )" ,
852+ tmp_generated += indent + tab + get_deepcopy (member_type_asr, " &(src->" + mem_name + " )" ,
853853 " &(dest->" + mem_name + " )" ) + " ;\n " ;
854854 } else if ( ASRUtils::is_array (member_type_asr) ) {
855855 ASR::dimension_t * m_dims = nullptr ;
856856 size_t n_dims = ASRUtils::extract_dimensions_from_ttype (member_type_asr, m_dims);
857857 if ( ASRUtils::is_fixed_size_array (m_dims, n_dims) ) {
858858 std::string array_size = std::to_string (ASRUtils::get_fixed_size_of_array (m_dims, n_dims));
859859 array_size += " *sizeof(" + CUtils::get_c_type_from_ttype_t (member_type_asr) + " )" ;
860- generated_code += indent + tab + " memcpy(dest->" + mem_name + " , src->" + mem_name +
860+ tmp_generated += indent + tab + " memcpy(dest->" + mem_name + " , src->" + mem_name +
861861 " , " + array_size + " );\n " ;
862862 } else {
863- generated_code += indent + tab + get_deepcopy (member_type_asr, " src->" + mem_name,
863+ tmp_generated += indent + tab + get_deepcopy (member_type_asr, " src->" + mem_name,
864864 " dest->" + mem_name) + " ;\n " ;
865865 }
866866 } else {
867- generated_code += indent + tab + " dest->" + mem_name + " = " + " src->" + mem_name + " ;\n " ;
867+ tmp_generated += indent + tab + " dest->" + mem_name + " = " + " src->" + mem_name + " ;\n " ;
868868 }
869869 }
870- generated_code += indent + " }\n\n " ;
870+ tmp_generated += indent + " }\n\n " ;
871+ generated_code += tmp_generated;
871872 }
872873
873874 void list_deepcopy (std::string list_struct_type,
0 commit comments