kopia lustrzana https://github.com/njcrawford/EmbroideryReader
Improved robustness of PesFile.OpenFile()
rodzic
5cf44ec832
commit
d0c2eb485a
|
@ -111,10 +111,6 @@ namespace PesFile
|
|||
|
||||
private void OpenFile(string filename)
|
||||
{
|
||||
#if !DEBUG
|
||||
try
|
||||
{
|
||||
#endif
|
||||
_filename = filename;
|
||||
fileIn = new System.IO.BinaryReader(System.IO.File.Open(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read));
|
||||
|
||||
|
@ -138,9 +134,25 @@ namespace PesFile
|
|||
{
|
||||
versionString += fileIn.ReadChar();
|
||||
}
|
||||
pesVersion = Convert.ToUInt16(versionString);
|
||||
if(!UInt16.TryParse(versionString, out pesVersion))
|
||||
{
|
||||
// This is not a file that we can read
|
||||
readyStatus = statusEnum.ParseError;
|
||||
lastError = "PES version is not the correct format";
|
||||
fileIn.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
int pecstart = fileIn.ReadInt32();
|
||||
// Sanity check on PEC start position
|
||||
if(fileIn.BaseStream.Length < (pecstart + 532))
|
||||
{
|
||||
// This file is probably truncated
|
||||
readyStatus = statusEnum.ParseError;
|
||||
lastError = "File appears to be truncated (PEC section is beyond end of file)";
|
||||
fileIn.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
// Read number of colors in this design
|
||||
fileIn.BaseStream.Position = pecstart + 48;
|
||||
|
@ -284,28 +296,6 @@ namespace PesFile
|
|||
|
||||
// Close the file
|
||||
fileIn.Close();
|
||||
|
||||
#if !DEBUG
|
||||
}
|
||||
catch (System.IO.IOException ioex)
|
||||
{
|
||||
readyStatus = statusEnum.IOError;
|
||||
lastError = ioex.Message;
|
||||
if (fileIn != null)
|
||||
{
|
||||
fileIn.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
readyStatus = statusEnum.ParseError;
|
||||
lastError = ex.Message;
|
||||
if (fileIn != null)
|
||||
{
|
||||
fileIn.Close();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
public int GetWidth()
|
||||
|
|
Ładowanie…
Reference in New Issue