On Friday, 8 September 2023 at 09:07:12 UTC, evilrat wrote:
Hard to tell from that code but it is quite unlikely there is a
compiler bug in such simple use case.
I assume you already tried debugging your program, right?
Yep! I have spent days and it's these kinds of bugs that burn me
off and make me want to give up.
So how about to diagnose a bit more, what if you enforce check
before malloc that size>0,
In the real code, there is a check! I just removed it from this
example to make the code more clear.
and second - from that example it is unclear how you are using
that struct, so maybe add else statement static assert to see
if it is misused somewhere else in your codebase?
That's interesting, I wasn't able to find something else! The bug
happens when I run the testing suit and well... the tests before
pass so I cannot find anything that goes wrong except for the
fact that I do not free the memory that is allocated (on purpose).
But still, why would the bug be there when I assign the `_ptr` on
the field and it won't happen if I don't assign it and just use a
regular local variable instead (and don't assign anything to the
`_ptr` field)?
Also this example doesn't have len field, depending on how you
use with regard to cap this could be a source of problems too.
Oh right, I forgot about that! The `_len` field normally exists
and it's it's also an unsigned 64-bit (u64) number! Yeah, the
code is a little bit changed from the original to make it more
simple for you guys...