Re: [RFC][PATCH] fix abs() macro to work with types wider than int

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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]
  Powered by Linux