Browse Source

Fix second issue mentioned in #2565: resource names such as path/to/file.ext are now properly handled as relative paths.

pull/2567/head
Siegfried Pammer 4 years ago
parent
commit
bf336d85cf
  1. 10
      ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs

10
ICSharpCode.Decompiler/CSharp/ProjectDecompiler/WholeProjectDecompiler.cs

@ -279,7 +279,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
Stream entryStream = (Stream)value; Stream entryStream = (Stream)value;
entryStream.Position = 0; entryStream.Position = 0;
individualResources.AddRange( individualResources.AddRange(
WriteResourceToFile(fileName, (string)name, entryStream)); WriteResourceToFile(fileName, name, entryStream));
} }
decodedIntoIndividualFiles = true; decodedIntoIndividualFiles = true;
} }
@ -576,7 +576,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
/// <summary> /// <summary>
/// Removes invalid characters from file names and reduces their length, /// Removes invalid characters from file names and reduces their length,
/// but keeps file extensions intact. /// but keeps file extensions and path structure intact.
/// </summary> /// </summary>
public static string SanitizeFileName(string fileName) public static string SanitizeFileName(string fileName)
{ {
@ -649,6 +649,12 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
if (separateAtDots) if (separateAtDots)
currentSegmentLength = 0; currentSegmentLength = 0;
} }
else if (treatAsFileName && (c == '/' || c == '\\') && currentSegmentLength > 0)
{
// if we treat this as a file name, we've started a new segment
b.Append(c);
currentSegmentLength = 0;
}
else else
{ {
// if the current segment exceeds maxSegmentLength characters, // if the current segment exceeds maxSegmentLength characters,

Loading…
Cancel
Save