From ae00b3a76f3c24092e79eced42b1dfc7cf36acac Mon Sep 17 00:00:00 2001 From: Roberto Ierusalimschy Date: Wed, 18 Apr 2007 16:24:35 -0300 Subject: another way to normalize -0 that avoids problems with very small numbers (adding 1 turns them all into 1) --- ltable.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'ltable.c') diff --git a/ltable.c b/ltable.c index 1b3bc540..def5d581 100644 --- a/ltable.c +++ b/ltable.c @@ -1,5 +1,5 @@ /* -** $Id: ltable.c,v 2.35 2006/09/11 14:07:24 roberto Exp roberto $ +** $Id: ltable.c,v 2.36 2007/04/10 12:18:17 roberto Exp roberto $ ** Lua tables (hash) ** See Copyright Notice in lua.h */ @@ -84,8 +84,8 @@ static const Node dummynode_ = { static Node *hashnum (const Table *t, lua_Number n) { unsigned int a[numints]; int i; - n += 1; /* normalize number (avoid -0) */ - lua_assert(sizeof(a) <= sizeof(n)); + if (luai_numeq(n, 0)) /* avoid problems with -0 */ + return gnode(t, 0); memcpy(a, &n, sizeof(a)); for (i = 1; i < numints; i++) a[0] += a[i]; return hashmod(t, a[0]); -- cgit v1.2.3-55-g6feb