From 84db17b6fc366b26eca33d4d5f6b3a204518e9dd Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Tue, 27 May 2014 10:59:03 -0300 Subject: more "religious" definition for 'lua_numtointeger' --- luaconf.h | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/luaconf.h b/luaconf.h index bb2b776b..d470b71d 100644 --- 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)) /* -- cgit v1.2.3-55-g6feb