From fb5ba01e5a551a36d0366a126630d49a31c29785 Mon Sep 17 00:00:00 2001 From: Wilma456 Date: Fri, 23 Jun 2017 17:38:40 +0200 Subject: [PATCH] Add Checks to Colors API --- .../computercraft/lua/rom/apis/colors.lua | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/resources/assets/computercraft/lua/rom/apis/colors.lua b/src/main/resources/assets/computercraft/lua/rom/apis/colors.lua index fea975d16..30da8c8ea 100644 --- a/src/main/resources/assets/computercraft/lua/rom/apis/colors.lua +++ b/src/main/resources/assets/computercraft/lua/rom/apis/colors.lua @@ -19,32 +19,51 @@ black = 32768 function combine( ... ) local r = 0 for n,c in ipairs( { ... } ) do + if type( c ) ~= "number" then + error( "bad argument #"..n.." (expected number, got " .. type( c ) .. ")", 2 ) + end r = bit32.bor(r,c) end return r end function subtract( colors, ... ) + if type( colors ) ~= "number" then + error( "bad argument #1 (expected number, got " .. type( colors ) .. ")", 2 ) + end local r = colors for n,c in ipairs( { ... } ) do + if type( c ) ~= "number" then + error( "bad argument #"..tostring( n+1 ).." (expected number, got " .. type( c ) .. ")", 2 ) + end r = bit32.band(r, bit32.bnot(c)) end return r end function test( colors, color ) + if type( colors ) ~= "number" then + error( "bad argument #1 (expected number, got " .. type( colors ) .. ")", 2 ) + end + if type( color ) ~= "number" then + error( "bad argument #2 (expected number, got " .. type( color ) .. ")", 2 ) + end return ((bit32.band(colors, color)) == color) end function rgb8( r, g, b ) - if type(r) == "number" and g == nil and b == nil then + if type( r ) ~= "number" then + error( "bad argument #1 (expected number, got " .. type( r ) .. ")", 2 ) + elseif type(r) == "number" and g == nil and b == nil then return bit32.band( bit32.rshift( r, 16 ), 0xFF ) / 255, bit32.band( bit32.rshift( r, 8 ), 0xFF ) / 255, bit32.band( r, 0xFF ) / 255 elseif type(r) == "number" and type(g) == "number" and type(b) == "number" then return bit32.lshift( bit32.band(r * 255, 0xFF), 16 ) + bit32.lshift( bit32.band(g * 255, 0xFF), 8 ) + bit32.band(b * 255, 0xFF) - else - error( "Expected 1 or 3 numbers", 2 ) + elseif type( g ) ~= "number" then + error( "bad argument #2 (expected number, got " .. type( g ) .. ")", 2 ) + elseif type( b ) ~= "number" then + error( "bad argument #3 (expected number, got " .. type( b ) .. ")", 2 ) end end