Skip to content

Commit 518bcd0

Browse files
committed
fix: Lua stack index usage for Set methods
1 parent 1181729 commit 518bcd0

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

UE4SS/src/LuaType/LuaUObject.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -407,12 +407,12 @@ namespace RC::LuaType
407407
auto_construct_object(params.lua, *property_value);
408408
break;
409409
case Operation::Set: {
410-
if (params.lua.is_userdata())
410+
if (params.lua.is_userdata(params.stored_at_index))
411411
{
412412
const auto& lua_object = params.lua.get_userdata<LuaType::UObject>(params.stored_at_index);
413413
*property_value = lua_object.get_remote_cpp_object();
414414
}
415-
else if (params.lua.is_nil())
415+
else if (params.lua.is_nil(params.stored_at_index))
416416
{
417417
params.lua.discard_value(params.stored_at_index);
418418
*property_value = nullptr;
@@ -443,12 +443,12 @@ namespace RC::LuaType
443443
LuaType::UClass::construct(params.lua, *property_value);
444444
break;
445445
case Operation::Set: {
446-
if (params.lua.is_userdata())
446+
if (params.lua.is_userdata(params.stored_at_index))
447447
{
448448
const auto& lua_object = params.lua.get_userdata<LuaType::UClass>(params.stored_at_index);
449449
*property_value = lua_object.get_remote_cpp_object();
450450
}
451-
else if (params.lua.is_nil())
451+
else if (params.lua.is_nil(params.stored_at_index))
452452
{
453453
params.lua.discard_value(params.stored_at_index);
454454
}
@@ -719,19 +719,19 @@ namespace RC::LuaType
719719
};
720720

721721
auto lua_to_memory = [&]() {
722-
if (params.lua.is_userdata())
722+
if (params.lua.is_userdata(params.stored_at_index))
723723
{
724724
// StructData as userdata
725725
params.throw_error("push_structproperty::lua_to_memory", "StructData as userdata is not yet implemented but there's userdata on the stack");
726726
}
727-
else if (params.lua.is_table())
727+
else if (params.lua.is_table(params.stored_at_index))
728728
{
729729
// StructData as table
730730
lua_table_to_memory();
731731
}
732-
else if (params.lua.is_nil())
732+
else if (params.lua.is_nil(params.stored_at_index))
733733
{
734-
params.lua.discard_value();
734+
params.lua.discard_value(params.stored_at_index);
735735
}
736736
else
737737
{
@@ -1788,12 +1788,12 @@ namespace RC::LuaType
17881788
auto_construct_object(params.lua, *property_value);
17891789
break;
17901790
case Operation::Set: {
1791-
if (params.lua.is_userdata())
1791+
if (params.lua.is_userdata(params.stored_at_index))
17921792
{
17931793
const auto& lua_object = params.lua.get_userdata<LuaType::UInterface>(params.stored_at_index);
17941794
*property_value = lua_object.get_remote_cpp_object();
17951795
}
1796-
else if (params.lua.is_nil())
1796+
else if (params.lua.is_nil(params.stored_at_index))
17971797
{
17981798
params.lua.discard_value(params.stored_at_index);
17991799
*property_value = nullptr;
@@ -1841,7 +1841,7 @@ namespace RC::LuaType
18411841
break;
18421842
}
18431843
case Operation::Set: {
1844-
if (params.lua.is_table())
1844+
if (params.lua.is_table(params.stored_at_index))
18451845
{
18461846
lua_pushstring(params.lua.get_lua_state(), "Object");
18471847
int adjusted_index = params.stored_at_index;
@@ -1852,9 +1852,9 @@ namespace RC::LuaType
18521852
lua_rawget(params.lua.get_lua_state(), adjusted_index);
18531853

18541854
Unreal::UObject* obj = nullptr;
1855-
if (params.lua.is_userdata())
1855+
if (params.lua.is_userdata(-1))
18561856
{
1857-
const auto& lua_object = params.lua.get_userdata<LuaType::UObject>();
1857+
const auto& lua_object = params.lua.get_userdata<LuaType::UObject>(-1);
18581858
obj = lua_object.get_remote_cpp_object();
18591859
}
18601860
params.lua.discard_value();
@@ -1863,9 +1863,9 @@ namespace RC::LuaType
18631863
lua_rawget(params.lua.get_lua_state(), adjusted_index);
18641864

18651865
Unreal::FName fname = NAME_None;
1866-
if (params.lua.is_userdata())
1866+
if (params.lua.is_userdata(-1))
18671867
{
1868-
auto& lua_fname = params.lua.get_userdata<LuaType::FName>();
1868+
auto& lua_fname = params.lua.get_userdata<LuaType::FName>(-1);
18691869
fname = lua_fname.get_local_cpp_object();
18701870
}
18711871
params.lua.discard_value();
@@ -1875,7 +1875,7 @@ namespace RC::LuaType
18751875
delegate_value->BindUFunction(obj, fname);
18761876
params.lua.discard_value(params.stored_at_index);
18771877
}
1878-
else if (params.lua.is_nil())
1878+
else if (params.lua.is_nil(params.stored_at_index))
18791879
{
18801880
delegate_value->Clear();
18811881
params.lua.discard_value(params.stored_at_index);

0 commit comments

Comments
 (0)