diff --git a/libcef_dll/ctocpp/render_handler_ctocpp.cc b/libcef_dll/ctocpp/render_handler_ctocpp.cc index a0d06dfb5..1a3163476 100644 --- a/libcef_dll/ctocpp/render_handler_ctocpp.cc +++ b/libcef_dll/ctocpp/render_handler_ctocpp.cc @@ -154,6 +154,10 @@ void CefRenderHandlerCToCpp::OnPaint(CefRefPtr browser, dirtyRectsCount, dirtyRectsList, buffer); + + // Restore param:dirtyRects; type: simple_vec_byref_const + if (dirtyRectsList) + delete [] dirtyRectsList; } void CefRenderHandlerCToCpp::OnCursorChange(CefRefPtr browser, diff --git a/libcef_dll/ctocpp/v8handler_ctocpp.cc b/libcef_dll/ctocpp/v8handler_ctocpp.cc index eb4ecdaf2..9b9c2a790 100644 --- a/libcef_dll/ctocpp/v8handler_ctocpp.cc +++ b/libcef_dll/ctocpp/v8handler_ctocpp.cc @@ -60,6 +60,9 @@ bool CefV8HandlerCToCpp::Execute(const CefString& name, &retvalStruct, exception.GetWritableStruct()); + // Restore param:arguments; type: refptr_vec_diff_byref_const + if (argumentsList) + delete [] argumentsList; // Restore param:retval; type: refptr_diff_byref if (retvalStruct) { if (retvalStruct != retvalOrig) { diff --git a/libcef_dll/ctocpp/v8value_ctocpp.cc b/libcef_dll/ctocpp/v8value_ctocpp.cc index 8215b2059..a1ea37c4a 100644 --- a/libcef_dll/ctocpp/v8value_ctocpp.cc +++ b/libcef_dll/ctocpp/v8value_ctocpp.cc @@ -700,6 +700,9 @@ bool CefV8ValueCToCpp::ExecuteFunction(CefRefPtr object, &exceptionStruct, rethrow_exception); + // Restore param:arguments; type: refptr_vec_same_byref_const + if (argumentsList) + delete [] argumentsList; // Restore param:retval; type: refptr_same_byref if (retvalStruct) { if (retvalStruct != retvalOrig) { @@ -769,6 +772,9 @@ bool CefV8ValueCToCpp::ExecuteFunctionWithContext( &exceptionStruct, rethrow_exception); + // Restore param:arguments; type: refptr_vec_same_byref_const + if (argumentsList) + delete [] argumentsList; // Restore param:retval; type: refptr_same_byref if (retvalStruct) { if (retvalStruct != retvalOrig) { diff --git a/tools/make_ctocpp_impl.py b/tools/make_ctocpp_impl.py index e6b96839f..0ef21e4bc 100644 --- a/tools/make_ctocpp_impl.py +++ b/tools/make_ctocpp_impl.py @@ -377,6 +377,11 @@ def make_ctocpp_function_impl_new(clsname, name, func): '\n }'\ '\n delete [] '+arg_name+'List;'\ '\n }' + elif arg_type == 'simple_vec_byref_const' or arg_type == 'bool_vec_byref_const' or \ + arg_type == 'refptr_vec_same_byref_const' or arg_type == 'refptr_vec_diff_byref_const': + result += comment+\ + '\n if ('+arg_name+'List)'\ + '\n delete [] '+arg_name+'List;' if len(result) != result_len: result += '\n' diff --git a/tools/translator.README.txt b/tools/translator.README.txt index 1c5b8645e..586133b6d 100644 --- a/tools/translator.README.txt +++ b/tools/translator.README.txt @@ -1,7 +1,7 @@ Chromium Embedded Framework (CEF) Translator Tool -- translator.py ------------------------------------------------------------------------------- -Document Last Updated: December 7, 2011 +Document Last Updated: February 14, 2012 OVERVIEW @@ -1164,6 +1164,10 @@ Parameters: // Execution cef_function(valueCount, valueList); + + // Parameter Restoration + if (valueList) + delete [] valueList; } Boolean vector non-const type by reference (bool_vec_byref): @@ -1270,6 +1274,10 @@ Parameters: // Execution cef_function(valueCount, valueList); + + // Parameter Restoration + if (valueList) + delete [] valueList; } Smart pointer vector non-const type same boundary side by reference @@ -1380,6 +1388,10 @@ Parameters: // Execution cef_function(valueCount, valueList); + + // Parameter Restoration + if (valueList) + delete [] valueList; } Smart pointer vector non-const type different boundary side by reference @@ -1490,6 +1502,10 @@ Parameters: // Execution cef_function(valueCount, valueList); + + // Parameter Restoration + if (valueList) + delete [] valueList; } Return Values: