Skip to content

bugfix(filesystem): Use native separators in archive listings - #3141

Draft
bobtista wants to merge 1 commit into
TheSuperHackers:mainfrom
bobtista:bobtista/bugfix/archive-listing-separator
Draft

bobtista wants to merge 1 commit into
TheSuperHackers:mainfrom
bobtista:bobtista/bugfix/archive-listing-separator

Conversation

@bobtista

@bobtista bobtista commented Aug 14, 2026 •

Copy link
Copy Markdown

Archive listings always append \, even when the directory already ends in /.

Now directory and filename paths use FileSystem::appendPathSeparator. The map scanner accepts either separator too, so it can read the resulting paths before #3107 merges.

@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch from 1430be2 to a7bff1f Compare August 27, 2026 16:30
@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch 4 times, most recently from fe7fa80 to 6a35398 Compare September 14, 2026 22:31
@bobtista bobtista changed the title bugfix(filesystem): Preserve native separators in archive listings bugfix(filesystem): Use native separators in archive listings Sep 14, 2026
@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Important

Review skipped

We couldn't safely recover the incremental review. No full review was started, and the last reviewed checkpoint was preserved. Retry later, or explicitly request a full review by commenting @coderabbitai full review.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review

No actionable comments were generated in the recent review.

Walkthrough

Archive listings and map path handling now use shared utilities for path separators and filename extraction instead of assuming backslashes.

Changes

Path separator handling

Layer / File(s) Summary
Filesystem path construction
Core/GameEngine/Source/Common/System/ArchiveFile.cpp
Archive listing constructs directory and filename paths with FileSystem::appendPathSeparator.
Map path handling
Core/GameEngine/Source/GameClient/MapUtil.cpp
Map discovery locates the final path separator with getLastPathSeparator and uses it to validate the filename suffix. Cached and newly loaded maps without lookup tags use getFileName for display names. Discovery retains its debug-crash-and-skip behavior when a path has no separator.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Suggested reviewers: xezon

Merge Risk: Minimal · previous review 96787

Archive listings now use native separators, and the inspected archive and map paths accept either slash form. No concrete merge-blocking risk remains; the change is mergeable subject to normal checks.

Architecture risk: Low · up to 96787

The change affects 1 system.

Changed systems: Core

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — Core (service) was modified; 2 changed files map to changed impact.

Before / after behavior

  • observed — Modified behavior in Core/GameEngine/Source/GameClient/MapUtil.cpp: Adds the PathUtil include used for cross-separator path and filename handling.
  • observed — Modified behavior in Core/GameEngine/Source/GameClient/MapUtil.cpp: Map discovery now finds the final path separator with getLastPathSeparator rather than searching only for \; if none is found, it retains the debug-crash-and-skip behavior.
  • observed — Modified behavior in Core/GameEngine/Source/GameClient/MapUtil.cpp: The expected filename suffix now uses the separator found in the path instead of always joining the filename and extension with a backslash.
  • observed — Modified behavior in Core/GameEngine/Source/GameClient/MapUtil.cpp: When a cached map has no lookup tag, its display name now comes from getFileName rather than extracting text after the last backslash.
🚥 Pre-merge checks | ✅ 4

✅ Passed checks (4 passed)

Check name Status Explanation
Title check ✅ Passed The title clearly describes the main change: using native path separators in archive listings.
Description check ✅ Passed The description directly explains the archive path separator bug and the related map scanner update.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
ℹ️ Recent review info

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 5c13e788-ffcf-40ae-ab4d-66ed86bddd26

📥 Commits

Reviewing files that changed from the base of the PR and between 296c832d1df5f597434c52bb29e7a3c596b214db and 96787cc2d9d191d42e38b1823b3608366ecb9433.

📒 Files selected for processing (1)

  • Core/GameEngine/Source/Common/System/ArchiveFile.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 1 remain after this review.

@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch from 296c832 to 96787cc Compare September 30, 2026 22:06
@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch from 96787cc to 32a47d2 Compare October 17, 2026 20:00
@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch from 32a47d2 to aa56130 Compare October 28, 2026 18:10
@bobtista
bobtista force-pushed the bobtista/bugfix/archive-listing-separator branch from aa56130 to 2d8e32c Compare November 5, 2026 16:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant