From f978ae1ea1f4e6c13c4257e145b8ec0b1b449453 Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:10:23 -0700 Subject: [PATCH] fix: escape filename in glob matching (#1492) --- .../core/library/alchemy/registries/unlinked_registry.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py index 0e876ac5..6b6fa65c 100644 --- a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py @@ -7,7 +7,7 @@ from dataclasses import dataclass, field from pathlib import Path import structlog -from wcmatch import pathlib +from wcmatch import glob, pathlib from tagstudio.core.library.alchemy.library import Library from tagstudio.core.library.alchemy.models import Entry @@ -54,7 +54,7 @@ class UnlinkedRegistry: # NOTE: ignore_to_glob() is needed for wcmatch, not ripgrep. ignore_patterns = ignore_to_glob(Ignore.get_patterns(library_dir)) for path in pathlib.Path(str(library_dir)).glob( - f"***/{match_entry.path.name}", + patterns=f"***/{glob.escape(match_entry.path.name)}", flags=PATH_GLOB_FLAGS, exclude=ignore_patterns, ):