[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Bug in hook(luaV_finishOp:OP_LE)?
- From: 云风 <cloudwu@...>
- Date: Mon, 13 Apr 2015 17:03:09 +0800
2015-04-09 23:34 GMT+08:00 Roberto Ierusalimschy <roberto@inf.puc-rio.br>:
>
> --- lvm.c 2015/03/30 15:45:01 2.238
> +++ lvm.c 2015/04/09 15:30:13
> @@ -275,9 +275,14 @@
> return l_strcmp(tsvalue(l), tsvalue(r)) <= 0;
> else if ((res = luaT_callorderTM(L, l, r, TM_LE)) >= 0) /* first try 'le' */
> return res;
> - else if ((res = luaT_callorderTM(L, r, l, TM_LT)) < 0) /* else try 'lt' */
> - luaG_ordererror(L, l, r);
> - return !res;
> + else { /* try 'lt': */
> + L->ci->callstatus |= CIST_LEQ; /* mark it is doing 'lt' for 'le' */
> + res = luaT_callorderTM(L, r, l, TM_LT);
> + L->ci->callstatus ^= CIST_LEQ; /* clear mark */
> + if (res < 0)
> + luaG_ordererror(L, l, r);
> + return !res; /* result is negated */
> + }
> }
I saw this patch in bugs page (http://www.lua.org/bugs.html) now.
But, Is this the patch base on the Lua 5.3.0 ? I can't patch it to the
official release.
The line 275 of lvm.c (http://www.lua.org/source/5.3/lvm.c.html) is
the function luaV_lessthan, not luaV_lessequal .
--
http://blog.codingnow.com