1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-21 03:43:21 +08:00

Fix NaN handling

This commit is contained in:
Dean Herbert 2019-03-13 11:30:33 +09:00
parent 73d9aef5bd
commit 93b774104a
3 changed files with 23 additions and 9 deletions

View File

@ -348,7 +348,10 @@ namespace osu.Game.Beatmaps.Formats
CustomSampleBank = customSampleBank
});
}
catch (FormatException e)
catch (FormatException)
{
}
catch (OverflowException)
{
}
}

View File

@ -15,11 +15,14 @@ namespace osu.Game.Beatmaps.Formats
public const double MAX_PARSE_VALUE = int.MaxValue;
public static double ParseFloat(string input, float parseLimit = (float)MAX_PARSE_VALUE)
public static float ParseFloat(string input, float parseLimit = (float)MAX_PARSE_VALUE)
{
var output = float.Parse(input, CultureInfo.InvariantCulture);
if (output < -parseLimit) throw new FormatException("Value is too low");
if (output > parseLimit) throw new FormatException("Value is too high");
if (output < -parseLimit) throw new OverflowException("Value is too low");
if (output > parseLimit) throw new OverflowException("Value is too high");
if (float.IsNaN(output)) throw new FormatException("Not a number");
return output;
}
@ -27,8 +30,11 @@ namespace osu.Game.Beatmaps.Formats
public static double ParseDouble(string input, double parseLimit = MAX_PARSE_VALUE)
{
var output = double.Parse(input, CultureInfo.InvariantCulture);
if (output < -parseLimit) throw new FormatException("Value is too low");
if (output > parseLimit) throw new FormatException("Value is too high");
if (output < -parseLimit) throw new OverflowException("Value is too low");
if (output > parseLimit) throw new OverflowException("Value is too high");
if (double.IsNaN(output)) throw new FormatException("Not a number");
return output;
}
@ -36,8 +42,9 @@ namespace osu.Game.Beatmaps.Formats
public static int ParseInt(string input, int parseLimit = (int)MAX_PARSE_VALUE)
{
var output = int.Parse(input, CultureInfo.InvariantCulture);
if (output < -parseLimit) throw new FormatException("Value is too low");
if (output > parseLimit) throw new FormatException("Value is too high");
if (output < -parseLimit) throw new OverflowException("Value is too low");
if (output > parseLimit) throw new OverflowException("Value is too high");
return output;
}

View File

@ -225,8 +225,12 @@ namespace osu.Game.Rulesets.Objects.Legacy
}
catch (FormatException)
{
return null;
}
catch (OverflowException)
{
}
return null;
}
private void readCustomSampleBanks(string str, SampleBankInfo bankInfo)