Randy Dunlap wrote:
On Thu, 19 Apr 2007 11:23:39 +0200 Jiri Bohac wrote:
Hi,
is there any reason to use an explicit int instead of a typeof in
the abs() macro? The current implementation will return bogus
results when used with longs.
I think it's like it is just to be consistent with abs() in C,
which also contains labs() and llabs().
We actually had labs() before (few months ago), but since it was not
used, and if it would it seemed better to just fix abs(), it was
removed. So I think this is the appropriate way to go.
How about changing the int to a typeof like this?:
Fix the abs() macro to work with wider types than int.
Signed-off-by: Jiri Bohac <[email protected]>
--- linux-2.6.21-rc5.orig/include/linux/kernel.h
+++ linux-2.6.21-rc5/include/linux/kernel.h
@@ -89,7 +89,7 @@ extern int cond_resched(void);
#define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
#define abs(x) ({ \
- int __x = (x); \
+ typeof(x) __x = (x); \
(__x < 0) ? -__x : __x; \
})
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]