Test and fix enchantment table float parsing bugfix
This commit is contained in:
parent
65ebc1b1fa
commit
384f1b3092
1 changed files with 28 additions and 1 deletions
|
@ -14,13 +14,20 @@ namespace CLre.Fixes
|
||||||
class Float_TryParse_Patch
|
class Float_TryParse_Patch
|
||||||
{
|
{
|
||||||
[HarmonyPostfix]
|
[HarmonyPostfix]
|
||||||
public static void BeforeMethodCall(string s, ref float result, ref bool __result)
|
public static void AfterMethodCall(string s, ref float result, ref bool __result)
|
||||||
{
|
{
|
||||||
if (__result) return;
|
if (__result) return;
|
||||||
|
#if DEBUG
|
||||||
|
API.Utility.Logging.Log($"Replacing float.TryParse method call with invariant call. Parsing: \"{s}\"");
|
||||||
|
#endif
|
||||||
__result = float.TryParse(s,
|
__result = float.TryParse(s,
|
||||||
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign |
|
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign |
|
||||||
NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent,
|
NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent,
|
||||||
NumberFormatInfo.InvariantInfo, out result);
|
NumberFormatInfo.InvariantInfo, out result);
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
API.Utility.Logging.Log($"Parsed \"{s}\" into {result}");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
[HarmonyTargetMethod]
|
[HarmonyTargetMethod]
|
||||||
|
@ -29,4 +36,24 @@ namespace CLre.Fixes
|
||||||
return AccessTools.Method(typeof(float), "TryParse", new []{typeof(string), typeof(float).MakeByRefType()});
|
return AccessTools.Method(typeof(float), "TryParse", new []{typeof(string), typeof(float).MakeByRefType()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HarmonyPatch(typeof(float), "Parse", new Type[] {typeof(string)})]
|
||||||
|
class Float_Parse_Patch
|
||||||
|
{
|
||||||
|
[HarmonyPrefix]
|
||||||
|
public static bool BeforeMethodCall(string s, ref float __result)
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
API.Utility.Logging.Log($"Replacing float.Parse method call with invariant call. Parsing: \"{s}\"");
|
||||||
|
#endif
|
||||||
|
bool success = float.TryParse(s,
|
||||||
|
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite | NumberStyles.AllowLeadingSign |
|
||||||
|
NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands | NumberStyles.AllowExponent,
|
||||||
|
NumberFormatInfo.InvariantInfo, out __result);
|
||||||
|
#if DEBUG
|
||||||
|
API.Utility.Logging.Log($"Parsed \"{s}\" into {__result}");
|
||||||
|
#endif
|
||||||
|
return !success;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue