Here are the warnings I get when compiling the engine using Code Analysis in VS2010. I tried to remove all the obvious false positives. Some warnings look suspicious, others are pointing to correct code that still might benefit from better error checking.
d:\sources\scummvm\scummvm\engines\tinsel\polygons.cpp(1877): warning C6011: Dereferencing NULL pointer 'Polys[i]'
d:\sources\scummvm\scummvm\engines\tinsel\rince.cpp(364): warning C6289: Incorrect operator: mutual exclusion over || is always a non-zero constant. Did you intend to use && instead?
d:\sources\scummvm\scummvm\engines\tinsel\debugger.cpp(60): warning C6031: Return value ignored: 'sscanf'
d:\sources\scummvm\scummvm\engines\tinsel\graphics.cpp(69): warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent
d:\sources\scummvm\scummvm\engines\tinsel\graphics.cpp(70): warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent
d:\sources\scummvm\scummvm\engines\tinsel\graphics.cpp(300): warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent
d:\sources\scummvm\scummvm\engines\tinsel\graphics.cpp(300): warning C6336: Arithmetic operator has precedence over question operator, use parentheses to clarify intent
Note:
If you want to try it yourself, you will need:
- the create_project patch set, along with the WIP code analysis patch (http://bitbucket.org/Littleboy/scummvm-jt/src)
- the following patch to silence some false positives ( http://bitbucket.org/Littleboy/scummvm-jt/src/tip/COMMON%20-%20Add%20annotations%20for%20analysis%20build%20configuration.patch )
- Visual Studio 2010 Ultimate or Team System (create_project support for analysis with VS2005/2008 isn't complete yet)
Ticket imported from: #3087863. Ticket imported from: bugs/5444.
Here are the results of the latest analysis build:
d:\sources\scummvm\scummvm-jt\engines\tinsel\adpcm.cpp(47): warning C6297: Arithmetic overflow: 32-bit value is shifted, then cast to 64-bit value. Results might not be an expected value d:\sources\scummvm\scummvm-jt\engines\tinsel\adpcm.cpp(54): warning C6297: Arithmetic overflow: 32-bit value is shifted, then cast to 64-bit value. Results might not be an expected value
C2697: http://msdn.microsoft.com/en-us/library/9t02bbsx.aspx