Skip to content

Commit 823c519

Browse files
committed
Fixed number assignment in Lua 5.1 and 5.2 (no integer type tag)
1 parent 5f10446 commit 823c519

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

LuaDkmDebuggerComponent/Bytecode.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ internal static LuaExtendedType GetIntegerNumberExtendedType()
117117
return (LuaExtendedType)(LuaBaseType.Number + 16);
118118
}
119119

120+
internal static bool HasIntegerNumberExtendedType()
121+
{
122+
return LuaHelpers.luaVersion == 503 || LuaHelpers.luaVersion == 504;
123+
}
124+
120125
internal static int? ReadTypeTag(DkmProcess process, ulong address, out ulong tagAddress, out ulong valueAddress, BatchRead batch = null)
121126
{
122127
int? typeTag;
@@ -676,7 +681,7 @@ bool Failed(string text, out string errorText_)
676681
}
677682
else if (value is LuaValueDataNumber sourceNumber)
678683
{
679-
if (sourceNumber.extendedType == GetFloatNumberExtendedType())
684+
if (sourceNumber.extendedType == GetFloatNumberExtendedType() || !LuaHelpers.HasIntegerNumberExtendedType())
680685
{
681686
// Write tag first here, unioned value will go over it when neccessary
682687
if (!DebugHelpers.TryWriteIntVariable(process, tagAddress, (int)GetFloatNumberExtendedType()))
@@ -689,7 +694,7 @@ bool Failed(string text, out string errorText_)
689694
return true;
690695
}
691696

692-
if (sourceNumber.extendedType == GetIntegerNumberExtendedType())
697+
if (sourceNumber.extendedType == GetIntegerNumberExtendedType() && LuaHelpers.HasIntegerNumberExtendedType())
693698
{
694699
if (!DebugHelpers.TryWriteIntVariable(process, tagAddress, (int)GetIntegerNumberExtendedType()))
695700
return Failed("Failed to modify target process memory (tag)", out errorText);

LuaDkmDebuggerComponent/LocalComponent.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1981,7 +1981,7 @@ void IDkmLanguageExpressionEvaluator.SetValueAsString(DkmEvaluationResult result
19811981

19821982
if (evalData.luaValueData as LuaValueDataNumber != null)
19831983
{
1984-
if ((evalData.luaValueData as LuaValueDataNumber).extendedType == LuaHelpers.GetIntegerNumberExtendedType())
1984+
if (LuaHelpers.HasIntegerNumberExtendedType() && (evalData.luaValueData as LuaValueDataNumber).extendedType == LuaHelpers.GetIntegerNumberExtendedType())
19851985
{
19861986
if (int.TryParse(value, out int intValue))
19871987
{

0 commit comments

Comments
 (0)