Fix branch resource overlapping bundle path

Fixes #13228
This commit is contained in:
Bjørn Erik Pedersen
2025-01-09 06:01:58 +01:00
parent 61d3d20129
commit c5a63a3b4f
2 changed files with 46 additions and 2 deletions

View File

@@ -509,8 +509,23 @@ func (m *pageMap) forEachResourceInPage(
// A page key points to the logical path of a page, which when sourced from the filesystem
// may represent a directory (bundles) or a single content file (e.g. p1.md).
// So, to avoid any overlapping ambiguity, we start looking from the owning directory.
ownerKey, _ := m.treePages.LongestPrefixAll(path.Dir(resourceKey))
if ownerKey != keyPage {
s := resourceKey
for {
s = path.Dir(s)
ownerKey, found := m.treePages.LongestPrefixAll(s)
if !found {
return true, nil
}
if ownerKey == keyPage {
break
}
if s != ownerKey && strings.HasPrefix(s, ownerKey) {
// Keep looking
continue
}
// Stop walking downwards, someone else owns this resource.
rw.SkipPrefix(ownerKey + "/")
return false, nil