[RFC] roundup.3: New page documenting roundup(3) (was: bug in roundup(3) from <sys/param.h>)
Alejandro Colomar
alx.manpages@gmail.com
Tue Jan 17 22:29:24 GMT 2023
Hi Paul,
On 1/17/23 22:53, Paul Eggert wrote:
> On 1/17/23 12:24, Alejandro Colomar wrote:
>>
>> This macro produces incorrect values when x + step would overflow or
>> wrap around
>
> The macro can have undefined behavior on overflow, if the result type is signed.
> So I suggest replacing "produces incorrect values" with "has undefined behavior".
>
> I suppose you could also document that the behavior is well-defined if the
> result type is unsigned, but that sounds like overkill.
Indeed. v2 below.
Cheers,
Alex
---
roundup(3) Library Functions Manual roundup(3)
NAME
roundup - round up in steps
LIBRARY
Standard C library (libc)
SYNOPSIS
#include <sys/param.h>
roundup(x, step);
DESCRIPTION
This macro rounds x to the nearest multiple of step that is not less
than x.
It is typically used for rounding up a pointer to align it or increas‐
ing a buffer to be allocated.
This API is not designed to be generic, and doesn’t work in some cases
that are not important for the typical use cases described above. See
CAVEATS.
RETURN VALUE
This macro returns the rounded value.
STANDARDS
This nonstandard macro is present in glibc and some BSDs.
CAVEATS
The arguments may be evaluated more than once.
x should be nonnegative, and step should be positive.
If x + step would overflow or wrap around, the behavior is undefined.
SEE ALSO
ceil(3), floor(3), lrint(3), rint(3), lround(3), round(3)
Linux man‐pages (unreleased) (date) roundup(3)
--
<http://www.alejandro-colomar.es/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://sourceware.org/pipermail/libc-alpha/attachments/20230117/fb23a783/attachment.sig>
More information about the Libc-alpha
mailing list