Fix memory leak due to CToCpp argument lists not being deleted (issue #526).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@491 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2012-02-14 17:41:35 +00:00
parent 55b363354f
commit ce0eb1c92b
5 changed files with 35 additions and 1 deletions

View File

@ -154,6 +154,10 @@ void CefRenderHandlerCToCpp::OnPaint(CefRefPtr<CefBrowser> browser,
dirtyRectsCount, dirtyRectsCount,
dirtyRectsList, dirtyRectsList,
buffer); buffer);
// Restore param:dirtyRects; type: simple_vec_byref_const
if (dirtyRectsList)
delete [] dirtyRectsList;
} }
void CefRenderHandlerCToCpp::OnCursorChange(CefRefPtr<CefBrowser> browser, void CefRenderHandlerCToCpp::OnCursorChange(CefRefPtr<CefBrowser> browser,

View File

@ -60,6 +60,9 @@ bool CefV8HandlerCToCpp::Execute(const CefString& name,
&retvalStruct, &retvalStruct,
exception.GetWritableStruct()); exception.GetWritableStruct());
// Restore param:arguments; type: refptr_vec_diff_byref_const
if (argumentsList)
delete [] argumentsList;
// Restore param:retval; type: refptr_diff_byref // Restore param:retval; type: refptr_diff_byref
if (retvalStruct) { if (retvalStruct) {
if (retvalStruct != retvalOrig) { if (retvalStruct != retvalOrig) {

View File

@ -700,6 +700,9 @@ bool CefV8ValueCToCpp::ExecuteFunction(CefRefPtr<CefV8Value> object,
&exceptionStruct, &exceptionStruct,
rethrow_exception); rethrow_exception);
// Restore param:arguments; type: refptr_vec_same_byref_const
if (argumentsList)
delete [] argumentsList;
// Restore param:retval; type: refptr_same_byref // Restore param:retval; type: refptr_same_byref
if (retvalStruct) { if (retvalStruct) {
if (retvalStruct != retvalOrig) { if (retvalStruct != retvalOrig) {
@ -769,6 +772,9 @@ bool CefV8ValueCToCpp::ExecuteFunctionWithContext(
&exceptionStruct, &exceptionStruct,
rethrow_exception); rethrow_exception);
// Restore param:arguments; type: refptr_vec_same_byref_const
if (argumentsList)
delete [] argumentsList;
// Restore param:retval; type: refptr_same_byref // Restore param:retval; type: refptr_same_byref
if (retvalStruct) { if (retvalStruct) {
if (retvalStruct != retvalOrig) { if (retvalStruct != retvalOrig) {

View File

@ -377,6 +377,11 @@ def make_ctocpp_function_impl_new(clsname, name, func):
'\n }'\ '\n }'\
'\n delete [] '+arg_name+'List;'\ '\n delete [] '+arg_name+'List;'\
'\n }' '\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: if len(result) != result_len:
result += '\n' result += '\n'

View File

@ -1,7 +1,7 @@
Chromium Embedded Framework (CEF) Translator Tool -- translator.py Chromium Embedded Framework (CEF) Translator Tool -- translator.py
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Document Last Updated: December 7, 2011 Document Last Updated: February 14, 2012
OVERVIEW OVERVIEW
@ -1164,6 +1164,10 @@ Parameters:
// Execution // Execution
cef_function(valueCount, valueList); cef_function(valueCount, valueList);
// Parameter Restoration
if (valueList)
delete [] valueList;
} }
Boolean vector non-const type by reference (bool_vec_byref): Boolean vector non-const type by reference (bool_vec_byref):
@ -1270,6 +1274,10 @@ Parameters:
// Execution // Execution
cef_function(valueCount, valueList); cef_function(valueCount, valueList);
// Parameter Restoration
if (valueList)
delete [] valueList;
} }
Smart pointer vector non-const type same boundary side by reference Smart pointer vector non-const type same boundary side by reference
@ -1380,6 +1388,10 @@ Parameters:
// Execution // Execution
cef_function(valueCount, valueList); cef_function(valueCount, valueList);
// Parameter Restoration
if (valueList)
delete [] valueList;
} }
Smart pointer vector non-const type different boundary side by reference Smart pointer vector non-const type different boundary side by reference
@ -1490,6 +1502,10 @@ Parameters:
// Execution // Execution
cef_function(valueCount, valueList); cef_function(valueCount, valueList);
// Parameter Restoration
if (valueList)
delete [] valueList;
} }
Return Values: Return Values: