News for hackers. Stuff that matters.
Re:Zlib-rs is faster than C by gf000 on Monday March 17, 2025 @04:33AM (#43386284)
It literally returns a valid output value as an error.
Re:Zlib-rs is faster than C by oneshtein on Monday March 17, 2025 @11:22AM (#43389527)
An error value is valid output in both cases.
Re:Zlib-rs is faster than C by MaxBarraclough on Monday March 17, 2025 @06:50PM (#43393545)
The code is unarguably wrong.

average(INT_MAX,INTMAX) should return INT_MAX, but it will get that wrong and return -1.

average(0,-2) should not return a special error-code value, but this code will do just that, making -1 an ambiguous output value.

Even its comment is wrong. We can see from the signature of the function that there can be no value that indicates an error, as every possible value of int may be a legitimate output value.

It's possible to implement this function in a portable and standard way though, along the lines of [0].

[0] https://stackoverflow.com/a/61711253/ (Disclosure: this is my code.)

Re:Zlib-rs is faster than C by MaxBarraclough on Tuesday March 18, 2025 @04:19AM (#43396843)
Too late for me to edit: as josefx pointed out, it also fails to properly address the undefined behavior. The sums INT_MAX + INT_MAX and INT_MIN + INT_MIN may still overflow despite being done using the long type.

That won't occur on an 'LP64' platform, [0] but we should aim for proper portability and conformance to the C language standard.

[0] https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_m...