diff --git a/dtool/src/interrogate/functionRemap.cxx b/dtool/src/interrogate/functionRemap.cxx index 2bf2fb06da..1b7315f1eb 100644 --- a/dtool/src/interrogate/functionRemap.cxx +++ b/dtool/src/interrogate/functionRemap.cxx @@ -146,20 +146,17 @@ call_function(ostream &out, int indent_level, bool convert_result, } else if (_type == T_typecast_method) { // A typecast method can be invoked implicitly. - string cast_expr = - "(" + _return_type->get_orig_type()->get_local_name(&parser) + ")"; + ostringstream cast_expr; + cast_expr << "(" + << _return_type->get_orig_type()->get_local_name(&parser) << ")"; - if (TypeManager::is_handle(_cpptype)) { - cast_expr += "(" + container + ")"; - } else { - cast_expr += "(*" + container + ")"; - } + _parameters[0]._remap->pass_parameter(cast_expr, container); if (!convert_result) { - return_expr = cast_expr; + return_expr = cast_expr.str(); } else { string new_str = - _return_type->prepare_return_expr(out, indent_level, cast_expr); + _return_type->prepare_return_expr(out, indent_level, cast_expr.str()); return_expr = _return_type->get_return_expr(new_str); }