#5450 closed defect
AUDIO: Code analysis warnings
Reported by: | Templier | Owned by: | |
---|---|---|---|
Priority: | normal | Component: | Audio |
Version: | Keywords: | build | |
Cc: | Game: |
Description
Here are the warnings I get when compiling 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\sound\softsynth\cms.cpp(194): 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\sound\softsynth\cms.cpp(201): 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\sound\softsynth\ym2612.cpp(128): 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\sound\softsynth\ym2612.cpp(144): 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\sound\softsynth\ym2612.cpp(153): 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\sound\softsynth\ym2612.cpp(164): 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\sound\mpu401.cpp(39): warning C6282: Incorrect operator: assignment of constant in Boolean context. Consider using '==' instead d:\sources\scummvm\scummvm\sound\rate.cpp(310): warning C6011: Dereferencing NULL pointer 'ptr++' d:\sources\scummvm\scummvm\sound\rate.cpp(310): warning C6011: Dereferencing NULL pointer 'ptr++' d:\sources\scummvm\scummvm\sound\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(973): warning C6011: Dereferencing NULL pointer 'co' d:\sources\scummvm\scummvm\sound\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(1041): warning C6011: Dereferencing NULL pointer 'o' d:\sources\scummvm\scummvm\sound\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(1043): warning C6011: Dereferencing NULL pointer 'c' d:\sources\scummvm\scummvm\sound\softsynth\opl\dbopl.cpp(1286): 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\sound\softsynth\opl\dbopl.cpp(1293): 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\sound\softsynth\opl\dbopl.cpp(1295): 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\sound\softsynth\opl\dbopl.cpp(1485): warning C6011: Dereferencing NULL pointer 'chip' d:\sources\scummvm\scummvm\sound\softsynth\opl\dbopl.cpp(1500): warning C6011: Dereferencing NULL pointer 'chan' d:\sources\scummvm\scummvm\sound\softsynth\opl\mame.cpp(280): 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\sound\softsynth\opl\mame.cpp(649): 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\sound\softsynth\opl\mame.cpp(650): 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\sound\softsynth\opl\mame.cpp(734): warning C6011: Dereferencing NULL pointer 'ENV_CURVE' d:\sources\scummvm\scummvm\sound\decoders\adpcm.cpp(534): 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\sound\decoders\adpcm.cpp(541): 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\sound\decoders\voc.cpp(124): warning C6308: 'realloc' might return null pointer: assigning null pointer to 'ret_sound', which is passed as an argument to 'realloc', will cause the original memory block to be leaked
Warning information: C6297: http://msdn.microsoft.com/en-us/library/9t02bbsx.aspx
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: #3087918. Ticket imported from: bugs/5450.
Change History (7)
comment:1 by , 14 years ago
comment:3 by , 14 years ago
Summary: | SOUND: Code analysis warnings → AUDIO: Code analysis warnings |
---|
comment:4 by , 14 years ago
Here are the results (I also added asserts after some of the malloc calls, so they don't show up anymore):
d:\sources\scummvm\scummvm-jt\audio\mpu401.cpp(39): warning C6282: Incorrect operator: assignment of constant in Boolean context. Consider using '==' instead d:\sources\scummvm\scummvm-jt\audio\softsynth\opl\dbopl.cpp(1282): 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\audio\softsynth\opl\dbopl.cpp(1289): 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\audio\softsynth\opl\dbopl.cpp(1291): 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\audio\softsynth\opl\dbopl.cpp(1481): warning C6011: Dereferencing NULL pointer 'chip': Lines: 1374, 1376, 1396, 1397, 1399, 1400, 1396, 1397, 1399, 1400, 1396, 1397, 1399, 1400, 1396, 1404, 1405, 1406, 1404, 1405, 1406, 1404, 1405, 1406, 1404, 1409, 1410, 1411, 1409, 1410, 1411, 1409, 1410, 1411, 1409, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1450, 1451, 1452, 1453, 1454, 1457, 1452, 1453, 1454, 1457, 1452, 1453, 1454, 1457, 1452, 1450, 1451, 1452, 1450, 1451, 1452, 1450, 1461, 1462, 1463, 1464, 1461, 1462, 1463, 1464, 1461, 1462, 1463, 1464, 1461, 1467, 1468, 1469, 1470, 1475, 1476, 1479, 1481 d:\sources\scummvm\scummvm-jt\audio\softsynth\opl\dbopl.cpp(1496): warning C6011: Dereferencing NULL pointer 'chan': Lines: 1374, 1376, 1396, 1397, 1399, 1400, 1396, 1397, 1399, 1400, 1396, 1397, 1399, 1400, 1396, 1404, 1405, 1406, 1404, 1405, 1406, 1404, 1405, 1406, 1404, 1409, 1410, 1411, 1409, 1410, 1411, 1409, 1410, 1411, 1409, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1434, 1435, 1436, 1437, 1438, 1440, 1442, 1443, 1444, 1445, 1432, 1450, 1451, 1452, 1453, 1454, 1457, 1452, 1453, 1454, 1457, 1452, 1453, 1454, 1457, 1452, 1450, 1451, 1452, 1450, 1451, 1452, 1450, 1461, 1462, 1463, 1464, 1461, 1462, 1463, 1464, 1461, 1462, 1463, 1464, 1461, 1467, 1468, 1469, 1470, 1475, 1476, 1479, 1481, 1482, 1468, 1469, 1470, 1475, 1476, 1479, 1481, 1482, 1468, 1469, 1470, 1475, 1476, 1479, 1481, 1482, 1468, 1485, 1486, 1490, 1492, 1494, 1495, 1496 d:\sources\scummvm\scummvm-jt\audio\softsynth\opl\mame.cpp(280): 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\audio\softsynth\opl\mame.cpp(649): 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\audio\softsynth\opl\mame.cpp(650): 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\audio\softsynth\cms.cpp(198): 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\audio\softsynth\cms.cpp(205): 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\audio\softsynth\ym2612.cpp(128): 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\audio\softsynth\ym2612.cpp(144): 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\audio\softsynth\ym2612.cpp(153): 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\audio\softsynth\ym2612.cpp(164): 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\audio\decoders\voc.cpp(124): warning C6308: 'realloc' might return null pointer: assigning null pointer to 'ret_sound', which is passed as an argument to 'realloc', will cause the original memory block to be leaked d:\sources\scummvm\scummvm-jt\audio\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(973): warning C6011: Dereferencing NULL pointer 'co': Lines: 932, 935, 937, 939, 940, 942, 943, 944, 946, 950, 955, 968, 969, 971, 972, 973 d:\sources\scummvm\scummvm-jt\audio\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(1041): warning C6011: Dereferencing NULL pointer 'o': Lines: 932, 935, 937, 939, 940, 942, 943, 944, 946, 950, 955, 1039, 1041 d:\sources\scummvm\scummvm-jt\audio\softsynth\fmtowns_pc98\towns_pc98_fmsynth.cpp(1043): warning C6011: Dereferencing NULL pointer 'c': Lines: 932, 935, 937, 939, 940, 942, 943, 944, 946, 950, 955, 1039, 1041, 1042, 1043
comment:5 by , 13 years ago
Results from the last run (around June 6 2011) are available here: https://gist.github.com/1008034
comment:6 by , 13 years ago
Status: | new → closed |
---|
comment:7 by , 6 years ago
Component: | → Audio |
---|---|
Summary: | AUDIO: Code analysis warnings → AUDIO: Code analysis warnings |
The ones in decoders/adpcm.cpp (if those are within Tinsel_ADPCMStream::readBufferTinselHeader() as I think they are; the line numbers don't seem to quite match up here) are false positives, since due to how the shifting value is calculated, the result always fits into 32 bits.