url.lua:remove_dot_components(): use temporary NUL marker to reduce empty-segment special-case code

This commit is contained in:
E. Westbrook 2018-08-21 12:02:25 -06:00
parent 38d936ec0e
commit ca5398be09
2 changed files with 7 additions and 2 deletions

View file

@ -85,11 +85,11 @@ end
local function remove_dot_components(path)
repeat
local was = path
path = path:gsub('/%./', '/', 1)
path = path:gsub('//', '/'..0x00..'/', 1)
until path == was
repeat
local was = path
path = path:gsub('//%.%./([^/]+)', '/%1', 1)
path = path:gsub('/%./', '/', 1)
until path == was
repeat
local was = path
@ -99,6 +99,7 @@ local function remove_dot_components(path)
path = path:gsub('/%.%.$', '/')
path = path:gsub('/%.$', '/')
path = path:gsub('^/%.%./', '/')
path = path:gsub(0x00, '')
return path
end