fix: backslash path splitting bug in ConfigPatcher
Build & Deploy / build-and-deploy (push) Successful in 40s
Build & Deploy / build-and-deploy (push) Successful in 40s
Root cause: the separator check used '\\\\'.equals(sep) comparing a 2-char Java string literal to a 1-char substring result — always false. This caused backslash paths (C:\FALLOUT1\MASTER.DAT) to never be split into components, so stale prefixes were never detected or rewritten. Fix: use char comparison (sep == '\\') which correctly identifies the separator type. Affected both findReplacement and existsIgnoreCase. This was a pre-existing bug from the original UploadResource code that was carried over during the refactor. Re-uploading Fallout after this fix will correctly patch FALLOUT.CFG paths.
This commit is contained in:
@@ -86,10 +86,10 @@ public class ConfigPatcher {
|
||||
|
||||
private static String findReplacement(String fullPath, Path extractDir, Set<String> seenPrefixes) {
|
||||
String drivePrefix = fullPath.substring(0, 2);
|
||||
String sep = fullPath.substring(2, 3);
|
||||
char sep = fullPath.charAt(2);
|
||||
String splitRegex = sep == '\\' ? "\\\\" : "/";
|
||||
String relPath = fullPath.substring(3);
|
||||
String splitter = "\\\\".equals(sep) ? "\\\\\\\\" : "/";
|
||||
String[] parts = relPath.split(splitter, -1);
|
||||
String[] parts = relPath.split(splitRegex, -1);
|
||||
|
||||
for (int skip = 0; skip < parts.length; skip++) {
|
||||
StringBuilder suffix = new StringBuilder();
|
||||
@@ -122,8 +122,8 @@ public class ConfigPatcher {
|
||||
}
|
||||
|
||||
private static boolean existsIgnoreCase(Path base, String relativePath) {
|
||||
String sep = relativePath.contains("\\") ? "\\\\\\\\" : "/";
|
||||
String[] parts = relativePath.split(sep, -1);
|
||||
char sep = relativePath.contains("\\") ? '\\' : '/';
|
||||
String[] parts = relativePath.split(sep == '\\' ? "\\\\" : "/", -1);
|
||||
Path current = base;
|
||||
try {
|
||||
for (int i = 0; i < parts.length; i++) {
|
||||
|
||||
Reference in New Issue
Block a user