From 8102c104461c1bb71a13e4531c59e23e371d35be Mon Sep 17 00:00:00 2001 From: zjncs <18910855655@163.com> Date: Fri, 4 Sep 2026 15:12:12 +0800 Subject: escape brackets in path.pattern path.pattern() escapes the lua pattern magic characters except '[' and ']', so a filename containing brackets is treated as a character class. For example, os.files("a[1]*.lua") matches "a1.lua" instead of "a[1].lua", and remove_files("a[1].lua") would remove "a1.lua" instead of "a[1].lua". Escape '[' and ']' like the other magic characters so bracket characters in file names are matched literally. --- xmake/core/base/path.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'xmake/core/base/path.lua') diff --git a/xmake/core/base/path.lua b/xmake/core/base/path.lua index ee154147f..79317decf 100644 --- a/xmake/core/base/path.lua +++ b/xmake/core/base/path.lua @@ -442,7 +442,7 @@ end function path.pattern(pattern) -- translate wildcards, e.g. *, ** - pattern = pattern:gsub("([%+%.%-%^%$%(%)%%])", "%%%1") + pattern = pattern:gsub("([%+%.%-%^%$%(%)%%%[%]])", "%%%1") pattern = pattern:gsub("%*%*", "\001") pattern = pattern:gsub("%*", "\002") pattern = pattern:gsub("\001", ".*") -- cgit v1.3.1