Marcus Meissner wrote:
On Fri, Aug 07, 2009 at 06:36:36PM -0700, chris ahrendt wrote:
[../wine-git/dlls/ntdll/server.c:802]: (error) Resource leak: fd
I do not fully understand the code (keep fd open to have to lock existing?), but it is in a fatal exit path.
[../wine-git/tools/fnt2bdf.c:219]: (error) Resource leak: fp [../wine-git/tools/fnt2bdf.c:653]: (error) Resource leak: fd
Fix submitted, seem necessary.
[../wine-git/tools/fnt2fon.c:304]: (error) Memory leak: file_lens
Fix submitted, but program is shortlived.
[../wine-git/tools/widl/write_msft.c:2540]: (error) Deallocating a deallocated pointer: fd
I do not understand what it mislikes about it. I think the detection is wrong.
[../wine-git/tools/winebuild/res16.c:187]: (error) Resource leak: fd
Fix submitted. Small issue though.
[../wine-git/tools/winedump/pe.c:1549]: (error) Memory leak: map
Fix submitted. Small issue though.
Ciao, Marcus
here is what its checking for :
Standard checks that are always used
* out of bounds * Using 'memfunc' on class * Using 'memfunc' on struct that contains a 'std::classname' * Class Base which is inherited by class Derived does not have a virtual destructor * Mismatching allocation and deallocation: varname * Memory leak http://en.wikipedia.org/wiki/Memory_leak: varname * Resource leak http://en.wikipedia.org/wiki/Resource_leak: varname * Deallocating a deallocated pointer: varname * Using 'varname' after it is deallocated / released * The given size sz is mismatching * Invalid radix in call to strtol http://en.wikipedia.org/wiki/Strtol or strtoul. Must be 0 or 2-36 * Overlapping data buffer varname * Unsigned division. The result will be wrong. * Unusual pointer arithmetic * Returning pointer to local array variable * Same iterator is used with both container1 and container2 * Dangerous usage of erase * After push_back or push_front, the iterator 'iterator_name' may be invalid * Wrong assignment of an auto-variable to an effective parameter of a function * Return of the address of an auto-variable * Division by zero * STL http://en.wikipedia.org/wiki/Standard_Template_Library: check usage of iterators after erase, as erase invalidates the iterator * STL: check usage of iterators and pointers after push_back and push_front. If using a vector the iterator or pointer may become invalid. * STL: Range checks with iterators should use != instead of <
I have not run it with the following :
Extra checks that you enable with "--all" These checks are not part of the standard checking because they produce false positives.
* Array index out of bounds * Buffer overrun * Dangerous usage of strncat http://en.wikipedia.org/wiki/Strcat, possible buffer overrun * Memory leak: varname * The size argument is given as a char constant
Extra checks that you enable with "--style"
* The class 'classname' has no constructor * Member variable not initialized in the constructor 'classname::varname' * Unused private function 'classname::funcname' * 'operator=' should return something * C-style pointer casting * Redundant condition. It is safe to deallocate a NULL pointer * Redundant condition. The remove function in the STL will not do anything if element doesn't exist * Found redundant if condition - 'if (condition);' * struct or union member 'structname::varname' is never used * Function parameter 'parname' is passed by value. It could be passed by reference instead. * Redundant code: Found a statement that begins with type constant * Warning - using char variable as array index * Warning - using char variable in bit operation * Condition is always truefalse
Checks that are enabled when both "--all" and "--style" is given
* Warning: Division with signed and unsigned operators
When giving "--unused-functions"
* The function 'funcname' is never used
I am going to start running with the --all flag going forward.
So the leak with fd cppcheck thinks that you have an exit path that will leave the fd allocated still without freeing the resource.
[../wine-git/dlls/ntdll/server.c:802]: (error) Resource leak: fd so this exits without freeing the resource.
[../wine-git/tools/widl/write_msft.c:2540]: (error) Deallocating a deallocated pointer: fd - This just means your freeing an already freed resource... This is more of a warning than anything
Chris