Fix cppcheck warnings
ClosedPublic

Authored by JIghtuse on Sep 9 2014, 9:51 AM.

Details

Summary

Cppcheck found a few defects in win32 IOManager and a typo in rts
testsuite. This commit fixes them.

Cppcheck 1.54 founds three possible null pointer dereferences of ioMan
pointer. It is dereferenced and checked for NULL after that.

testheapalloced.c contains typo in printf statement, which should print
percent sign but treated as parameter placement by compiler. To properly
print percent sign one need to use "%%" string.

FYI: Cppcheck 1.66 cannot find possible null pointer dereferences in
mentioned places, mistakenly thinking that some memory leaking instead.
I probably fill a regression bug to Cppcheck.

Test Plan

Build project, run 'make fulltest'. It finished with 28 unexpected
failures. I don't know if they are related to my fix.

Unexpected results from:
TEST="T3500b T7891 tc124 T7653 T5321FD T5030 T4801 T6048 T5631 T5837 T5642 T9020 T3064 parsing001 T1969 T5321Fun T783 T3294"

OVERALL SUMMARY for test run started at Tue Sep  9 16:46:27 2014 NOVT
 4:23:24 spent to go through
    4101 total tests, which gave rise to
   16075 test cases, of which
    3430 were skipped

     315 had missing libraries
   12154 expected passes
     145 expected failures

       3 caused framework failures
       0 unexpected passes
      28 unexpected failures

Unexpected failures:
   ../../libraries/base/tests  T7653 [bad exit code] (ghci,threaded1,threaded2)
   perf/compiler               T1969 [stat not good enough] (normal)
   perf/compiler               T3064 [stat not good enough] (normal)
   perf/compiler               T3294 [stat not good enough] (normal)
   perf/compiler               T4801 [stat not good enough] (normal)
   perf/compiler               T5030 [stat not good enough] (normal)
   perf/compiler               T5321FD [stat not good enough] (normal)
   perf/compiler               T5321Fun [stat not good enough] (normal)
   perf/compiler               T5631 [stat not good enough] (normal)
   perf/compiler               T5642 [stat not good enough] (normal)
   perf/compiler               T5837 [stat not good enough] (normal)
   perf/compiler               T6048 [stat not good enough] (optasm)
   perf/compiler               T783 [stat not good enough] (normal)
   perf/compiler               T9020 [stat not good enough] (optasm)
   perf/compiler               parsing001 [stat not good enough] (normal)
   typecheck/should_compile    T7891 [exit code non-0] (hpc,optasm,optllvm)
   typecheck/should_compile    tc124 [exit code non-0] (hpc,optasm,optllvm)
   typecheck/should_run        T3500b [exit code non-0] (hpc,optasm,threaded2,dyn,optllvm)

Diff Detail

Repository
rGHC Glasgow Haskell Compiler
Lint
Lint Skipped
Unit
Unit Tests Skipped
JIghtuse updated this revision to Diff 517.Sep 9 2014, 9:51 AM
JIghtuse retitled this revision from to Fix cppcheck warnings.
JIghtuse updated this object.
JIghtuse edited the test plan for this revision. (Show Details)

Just thought that it is possible memory leak if ioMan pointer is NULL and wIterm is already allocated. Didn't realize it before.

austin accepted this revision.Sep 11 2014, 10:33 AM
austin edited edge metadata.

Excellent catch - some nice undefined behavior going on here. Hopefully this won't lead to us being hax0red like the Linux kernel.

This revision is now accepted and ready to land.Sep 11 2014, 10:33 AM
austin closed this revision.Sep 16 2014, 7:58 AM
austin updated this revision to Diff 549.

Closed by commit rGHC3681c885ad6f (authored by @JIghtuse, committed by @austin).