[Toybox] Min/Max bug fix

Andre Renaud andre at bluewatersys.com
Thu Mar 14 13:46:02 PDT 2013


There is a minor bug in the min/max macros that can result in
unexpected results when doing things like:
5 + min(a,b)
This currently essentially becomes
(5 + a) < (b) ? (a) : (b)
instead of:
5 + ((a < b) ? a : b)

Attached patch resolves it with the minimal changes
In general however, might not the following common min/max definitions
be more robust?
#define min(x,y) ({ \
        typeof(x) _x = (x);       \
        typeof(y) _y = (y);       \
        _x < _y ? _x : _y; })
#define max(x,y) ({ \
        typeof(x) _x = (x);       \
        typeof(y) _y = (y);       \
        _x > _y ? _x : _y; })

Regards,
Andre
-------------- next part --------------
A non-text attachment was scrubbed...
Name: min_max.patch
Type: application/octet-stream
Size: 508 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20130315/d12bd916/attachment-0003.obj>


More information about the Toybox mailing list