FileSystemGlobbing: Matcher throws ArgumentOutOfRangeException when the rootDir is the same value as the file
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
从 src/libraries/Microsoft.Extensions.FileSystemGlobbing/src/InMemoryDirectoryInfo.cs 开始,尤其查看 issue 中链接的 EnumerateFileSystemInfos 代码。使用提供的基于文件的应用重现故障,其中 rootDir 和 file 是同一路径,然后检查相关的 FileSystemGlobbing 测试。对于此情况,Match() 返回 HasMatches == false 且不抛出异常,即为完成。
由索引模型根据 Issue 内容生成。
描述
Description
See title and file-based app repro below.
Reproduction Steps
#:package [email protected]
using Microsoft.Extensions.FileSystemGlobbing;
var root = Path.GetPathRoot(Environment.CurrentDirectory)!;
var matcher = new Matcher();
matcher.AddInclude("MyFile.txt");
Console.WriteLine($"Match(rootDir: \"{root}\", file: \"{root}\")");
Console.WriteLine(matcher.Match(root, root).HasMatches);
Expected behavior
Match() returns a result with HasMatches == false and doesn't throw an exception.
I'm unsure whether it would/should be possible to setup a matcher which would match the path root.
Actual behavior
Match throws an exception:
Unhandled exception. System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than or equal to the size of the collection. (Parameter 'startIndex')
at System.String.IndexOfAny(Char[] anyOf, Int32 startIndex, Int32 count)
at Microsoft.Extensions.FileSystemGlobbing.InMemoryDirectoryInfo.EnumerateFileSystemInfos()+MoveNext()
at System.Collections.Generic.List`1.AddRange(IEnumerable`1 collection)
at Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext.Match(DirectoryInfoBase directory, String parentRelativePath)
at Microsoft.Extensions.FileSystemGlobbing.Internal.MatcherContext.Execute()
at Microsoft.Extensions.FileSystemGlobbing.Matcher.Execute(DirectoryInfoBase directoryInfo)
at Microsoft.Extensions.FileSystemGlobbing.MatcherExtensions.Match(Matcher matcher, String rootDir, IEnumerable`1 files)
at Microsoft.Extensions.FileSystemGlobbing.MatcherExtensions.Match(Matcher matcher, String rootDir, String file)
at Program.<Main>$(String[] args)
Regression?
No
Known Workarounds
Check that rootDir != file before calling Match().
Configuration
Using 11.0.100-rc.3.26522.148 SDK to build. Unsure which runtime that means I am running.
Library version given in the sample.
Running on Ubuntu 24.04, x64.
I doubt the problem is configuration-specific, I believe it also repros on Windows.
Other information
- 主要语言
- C#
- 星标
- 18.4k
- 派生
- 5.8k
- 平均合并
- 2 天 15 小时
- 30 天内合并 PR
- 596
环境准备
在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
dotnet/runtime 的其他 Issue
-
area-Extensions-Configuration bug source-generator untriaged
难度 2/5 1-3 小时 新手友好度 78/100
dotnet/runtime#136972 · 1 条评论 ·
维护者通常 1 天内回复
-
[wasi] .NET 10: WasmEnableSIMD with AOT fails because WasiApp.targets has -msimd128 commented out未关闭area-Build-mono untriaged
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复
-
area-System.ComponentModel untriaged
难度 2/5 1-3 小时 新手友好度 65/100
dotnet/runtime#136608 · 2 条评论 ·
维护者通常 1 天内回复
-
MemoryMappedFile (Windows): failed MEM_COMMIT is ignored, accessor over reserved memory crashes the process可能已有人在做 @RutulPatel8 于 4 天前认领。 未关闭area-System.IO bug untriaged
难度 2/5 1-3 小时 新手友好度 78/100
dotnet/runtime#136599 · 1 条评论 ·
维护者通常 1 天内回复
-
area-System.IO untriaged
难度 2/5 1-3 小时 新手友好度 76/100
dotnet/runtime#136577 · 1 条评论 ·
维护者通常 1 天内回复
相似的 Issue
-
enhancement ready-for-human
难度 2/5 1-3 小时 新手友好度 62/100
fboucher/2d6-dungeon-app#288 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 80/100
Unity-Technologies/unity-agent-plugin#118 ·
维护者通常 1 天内回复
-
The Recommended preset turns on Import Uno DSP, which only works with the Material theme可能已有人在做 @agneszitte 今天认领。 未关闭
难度 1/5 1 小时以内 新手友好度 92/100
unoplatform/uno.templates#2388 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 77/100
eyalgolan/statecraft-israel#2732 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 82/100
StratumServer/Optimum#198 ·
维护者通常 1 天内回复