commit 84db17b6fc366b26eca33d4d5f6b3a204518e9dd
parent 456806f25c239bf36039fc2742547547cc55fbb1
Author: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
Date: Tue, 27 May 2014 10:58:38 -0300
more "religious" definition for 'lua_numtointeger'
Diffstat:
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/luaconf.h b/luaconf.h
@@ -1,5 +1,5 @@
/*
-** $Id: luaconf.h,v 1.203 2014/05/21 15:24:21 roberto Exp roberto $
+** $Id: luaconf.h,v 1.204 2014/05/26 17:10:22 roberto Exp roberto $
** Configuration file for Lua
** See Copyright Notice in lua.h
*/
@@ -508,19 +508,17 @@
/*
@@ lua_numtointeger converts a float number to an integer, or
** return 0 if float is not within the range of a lua_Integer.
-** (The comparisons are tricky because of rounding, which can or
-** not occur depending on the relative sizes of floats and integers.
+** (The comparisons are tricky because of rounding.
** The tests here assume a two-complement representation, where
** MININTEGER always has an exact representation as a float,
-** while if LUA_MAXINTEGER has an exact representation, so does
-** (LUA_MAXINTEGER + 1); otherwise, LUA_MAXINTEGER is equal to
-** (LUA_MAXINTEGER + 1) when converted to a float.)
+** while LUA_MAXINTEGER may not have one, and therefore its
+** conversion to float may have an ill-defined value.)
** This macro should be used only when 'n' has an integral value.
*/
#define lua_numtointeger(n,p) \
- (((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
- (n) < (LUA_NUMBER)(LUA_MAXINTEGER) + 1) && \
- (*p = (LUA_INTEGER)(n), 1))
+ ((n) >= (LUA_NUMBER)(LUA_MININTEGER) && \
+ (n) < -(LUA_NUMBER)(LUA_MININTEGER) && \
+ (*p = (LUA_INTEGER)(n), 1))
/*