diff options
author | Kim Alvefur <zash@zash.se> | 2021-12-11 20:54:37 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2021-12-11 20:54:37 +0100 |
commit | d482ece962f9d003cb055316c5535eb5b5c719ef (patch) | |
tree | 1d7e8ac1d075b716e44f27d2bd814ae6101ff0d1 /util | |
parent | db41cd8e4df7bb1003e9dfb60671ef56113ad69c (diff) | |
download | prosody-d482ece962f9d003cb055316c5535eb5b5c719ef.tar.gz prosody-d482ece962f9d003cb055316c5535eb5b5c719ef.zip |
util.format: Fix some formats expecting positive numbers in Lua 5.2
Amazing how string.format behaves differently under each Lua version
Diffstat (limited to 'util')
-rw-r--r-- | util/format.lua | 5 |
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 |