aboutsummaryrefslogtreecommitdiffstats
path: root/util/format.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/format.lua')
-rw-r--r--util/format.lua5
1 files changed, 5 insertions, 0 deletions
diff --git a/util/format.lua b/util/format.lua
index 76296fbf..efd92e3d 100644
--- a/util/format.lua
+++ b/util/format.lua
@@ -14,6 +14,8 @@ end
-- In Lua 5.3+ these formats throw an error if given a float
local expects_integer = { c = true, d = true, i = true, o = true, u = true, X = true, x = true, };
+-- In Lua 5.2 these throw an error given a negative number
+local expects_positive = { o = true; u = true; x = true; X = true };
-- Printable Unicode replacements for control characters
local control_symbols = {
-- 0x00 .. 0x1F --> U+2400 .. U+241F, 0x7F --> U+2421
@@ -82,6 +84,9 @@ local function format(formatstring, ...)
elseif expects_integer[option] and num_type(arg) ~= "integer" then
args[i] = tostring(arg);
return "[%s]";
+ elseif expects_positive[option] and arg < 0 then
+ args[i] = tostring(arg);
+ return "[%s]";
elseif (option == "a" or option == "A") and not supports_a then
return "%x";
else