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 @@ -279,7 +279,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
Stream entryStream = (Stream)value;
entryStream.Position = 0;
individualResources.AddRange(
WriteResourceToFile(fileName, (string)name, entryStream));
WriteResourceToFile(fileName, name, entryStream));
}
decodedIntoIndividualFiles = true;
}
@ -576,7 +576,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -576,7 +576,7 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
/// <summary>
/// Removes invalid characters from file names and reduces their length,
/// but keeps file extensions intact.
/// but keeps file extensions and path structure intact.
/// </summary>
public static string SanitizeFileName(string fileName)
{
@ -649,6 +649,12 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler @@ -649,6 +649,12 @@ namespace ICSharpCode.Decompiler.CSharp.ProjectDecompiler
if (separateAtDots)
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
{
// if the current segment exceeds maxSegmentLength characters,

Loading…
Cancel
Save