coercion memory leak fix, part 1

This commit is contained in:
David Rose 2009-06-10 14:33:44 +00:00
parent d427b8559f
commit 70e1e46a61

View File

@ -2680,10 +2680,6 @@ write_function_instance(ostream &out, InterfaceMaker::Object *obj,
} }
string return_expr = remap->call_function(out, extra_indent_level, true, container, pexprs); string return_expr = remap->call_function(out, extra_indent_level, true, container, pexprs);
if (coercion_possible) {
indent(out, extra_indent_level)
<< "Py_XDECREF(coerced);\n";
}
if (return_expr.empty()) { if (return_expr.empty()) {
if (track_interpreter) { if (track_interpreter) {
indent(out,extra_indent_level) << "in_interpreter = 1;\n"; indent(out,extra_indent_level) << "in_interpreter = 1;\n";
@ -2697,6 +2693,10 @@ write_function_instance(ostream &out, InterfaceMaker::Object *obj,
if (!extra_cleanup.empty()) { if (!extra_cleanup.empty()) {
indent(out,extra_indent_level) << extra_cleanup << "\n"; indent(out,extra_indent_level) << extra_cleanup << "\n";
} }
if (coercion_possible) {
indent(out, extra_indent_level)
<< "Py_XDECREF(coerced);\n";
}
do_assert_init(out, extra_indent_level,is_constructor); do_assert_init(out, extra_indent_level,is_constructor);
indent(out,extra_indent_level) << "return Py_BuildValue(\"\");\n"; indent(out,extra_indent_level) << "return Py_BuildValue(\"\");\n";
@ -2723,6 +2723,10 @@ write_function_instance(ostream &out, InterfaceMaker::Object *obj,
if (!is_inplace) { if (!is_inplace) {
return_expr = manage_return_value(out, extra_indent_level, remap, "return_value"); return_expr = manage_return_value(out, extra_indent_level, remap, "return_value");
} }
if (coercion_possible) {
indent(out, extra_indent_level)
<< "Py_XDECREF(coerced);\n";
}
do_assert_init(out, extra_indent_level,is_constructor); do_assert_init(out, extra_indent_level,is_constructor);
pack_return_value(out, extra_indent_level, remap, remap->_return_type->temporary_to_return(return_expr),ForwardDeclrs,is_inplace); pack_return_value(out, extra_indent_level, remap, remap->_return_type->temporary_to_return(return_expr),ForwardDeclrs,is_inplace);
} }