diff options
author | David Thornley <david.thornley@touchstargroup.com> | 2016-05-11 13:28:53 +1000 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2016-05-13 17:03:53 +0200 |
commit | da0226fa7eece0b87bcc04d79bd1a9b198d09fd0 (patch) | |
tree | a5eba82f18841740e3fe480891fd7230656f4522 /scripts/cleanfile | |
parent | 45e0f8b82645faaeea35256c1def0f7706b495ba (diff) | |
download | upstream-da0226fa7eece0b87bcc04d79bd1a9b198d09fd0.tar.gz upstream-da0226fa7eece0b87bcc04d79bd1a9b198d09fd0.tar.bz2 upstream-da0226fa7eece0b87bcc04d79bd1a9b198d09fd0.zip |
lua: Fixed broken __lt/__le operators caused by lnum patch.
This was found while investigating why luarocks does not work. It was
traced to a quite old lnum patch for 5.1.3. I compared against the
latest 5.1.4 patch - https://github.com/LuaDist/lualnum and discovered
the lessthan/lessequal evaluation was not falling through to the
call_orderTM (tag methods).
I have tested LuCI (simple tests) and used the following lua code to
validate the patch (both host and target patches supplied): -
> local my_mt = {
> __eq = function(v1, v2)
> print("__eq")
> return false
> end,
> __lt = function(v1, v2)
> print("__lt")
> return false
> end,
> __le = function(v1, v2)
> print("__le")
> return false
> end
> }
>
> function get_my(vstring)
> local my = {}
> my.string = vstring;
> setmetatable(my, my_mt);
> return my;
> end
>
> local a = get_my("1.0")
> local b = get_my("1.0")
>
> local eq_works = a == b;
> local lt_works = a < b;
> local gt_works = a > b;
>
> local lte_works = a <= b;
> local gte_works = a >= b;
Without the patch the following error will be presented: -
“attempt to compare two table values”
Signed-off-by: David Thornley <david.thornley@touchstargroup.com>
Diffstat (limited to 'scripts/cleanfile')
0 files changed, 0 insertions, 0 deletions