I believe the guarantee at that chunk of code is that void_total of the era will be >= 0.
I could add an asset at those sections of code if need be.
If not, what is the correct type to be used here? I think size_t is reasonable as none of them are supposed to be negative in the first place.
#12636: ProfHeap's printf modifiers are incorrect
-------------------------------------+-------------------------------------
Reporter: Phyx- | Owner: bollu
Type: bug | Status: new
Priority: normal | Milestone:
Component: Runtime System | Version: 8.0.1
Resolution: | Keywords: newcomer
Operating System: Windows | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Phyx-):
I actually question the use of `ssize_t` at all for these values. I think
the calculations violate the expected value ranges of `ssize_t` namely
with
{{{
censuses[t].void_total += size;
censuses[era].void_total -= size;
}}}
So I think the types in `_counter` are wrong and have the potential to do
an unsigned underflow as `ssize_t` is only guaranteed to be able to store
values between `[-1, {SSIZE_MAX}]`[1]
[1]http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12636#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler