fix stack indexes

This commit is contained in:
Grzegorz Kowalski 2023-02-04 00:20:09 +01:00
parent 0d667035d3
commit 5f138b362b
5 changed files with 17 additions and 17 deletions

View File

@ -1,7 +1,7 @@
#include "object.h" #include "object.h"
void *lut_getobj(lua_State *L, int n) void *lut_getobj(lua_State *L, int idx)
{ {
LUT_LOG(TRACE, "Extracting object from userdata"); LUT_LOG(TRACE, "Extracting object from userdata");
return *(void**)lua_touserdata(L, n); return *(void**)lua_touserdata(L, idx);
} }

View File

@ -4,6 +4,6 @@
#include <core/lua.h> #include <core/lua.h>
#include <core/logging/log.h> #include <core/logging/log.h>
void *lut_getobj(lua_State *L, int n); void *lut_getobj(lua_State *L, int idx);
#endif /* __LUT_OBJECT_H__ */ #endif /* __LUT_OBJECT_H__ */

View File

@ -166,7 +166,7 @@ int lut_DeviceProxy_newindex(lua_State* L)
udata->type_map[attr_name].format = attr.get_data_format(); udata->type_map[attr_name].format = attr.get_data_format();
} }
Tango::DeviceAttribute v = pack_attr_data(L, udata->type_map[attr_name], attr_name); Tango::DeviceAttribute v = pack_attr_data(L, 3, udata->type_map[attr_name], attr_name);
udata->dev->write_attribute(v); udata->dev->write_attribute(v);
return 0; return 0;

View File

@ -243,7 +243,7 @@ void push_attr_string(lua_State* L, Tango::DeviceAttribute attr)
} }
} }
Tango::DeviceAttribute pack_attr_data(lua_State* L, AttrTypeDescription d, const char* attr_name) Tango::DeviceAttribute pack_attr_data(lua_State* L, int idx, AttrTypeDescription d, const char* attr_name)
{ {
switch(d.type) switch(d.type)
{ {
@ -253,49 +253,49 @@ Tango::DeviceAttribute pack_attr_data(lua_State* L, AttrTypeDescription d, const
case 1: // bool case 1: // bool
// Lua 5.1 is missing the luaL_checkboolean function // Lua 5.1 is missing the luaL_checkboolean function
return pack_attr_value(attr_name, (bool)lua_toboolean(L, 3)); return pack_attr_value(attr_name, (bool)lua_toboolean(L, idx));
break; break;
case 2: // short case 2: // short
return pack_attr_value(attr_name, pop_number<short>(L, 3)); return pack_attr_value(attr_name, pop_number<short>(L, idx));
break; break;
case 3: // long case 3: // long
return pack_attr_value(attr_name, pop_number<long>(L, 3)); return pack_attr_value(attr_name, pop_number<long>(L, idx));
break; break;
case 4: // float case 4: // float
return pack_attr_value(attr_name, pop_number<float>(L, 3)); return pack_attr_value(attr_name, pop_number<float>(L, idx));
break; break;
case 5: // double case 5: // double
return pack_attr_value(attr_name, pop_number<double>(L, 3)); return pack_attr_value(attr_name, pop_number<double>(L, idx));
break; break;
case 6: // ushort case 6: // ushort
return pack_attr_value(attr_name, pop_number<unsigned short>(L, 3)); return pack_attr_value(attr_name, pop_number<unsigned short>(L, idx));
break; break;
case 7: // ulong case 7: // ulong
return pack_attr_value(attr_name, pop_number<unsigned long>(L, 3)); return pack_attr_value(attr_name, pop_number<unsigned long>(L, idx));
break; break;
case 8: // string case 8: // string
case 9: // char[] case 9: // char[]
case 20: // const string case 20: // const string
return pack_attr_value(attr_name, luaL_checkstring(L, 3)); return pack_attr_value(attr_name, luaL_checkstring(L, idx));
break; break;
case 23: // long64 case 23: // long64
return pack_attr_value(attr_name, pop_number<int64_t>(L, 3)); return pack_attr_value(attr_name, pop_number<int64_t>(L, idx));
break; break;
case 24: // ulong64 case 24: // ulong64
return pack_attr_value(attr_name, pop_number<uint64_t>(L, 3)); return pack_attr_value(attr_name, pop_number<uint64_t>(L, idx));
break; break;
case 27: // int case 27: // int
return pack_attr_value(attr_name, pop_number<int>(L, 3)); return pack_attr_value(attr_name, pop_number<int>(L, idx));
break; break;
case 10: // short[] case 10: // short[]

View File

@ -28,7 +28,7 @@ void push_attr_bool(lua_State* L, Tango::DeviceAttribute attr);
void push_attr_string(lua_State* L, Tango::DeviceAttribute attr); void push_attr_string(lua_State* L, Tango::DeviceAttribute attr);
// WRITE ATTRIBUTE ------------------------------------------------------------ // WRITE ATTRIBUTE ------------------------------------------------------------
Tango::DeviceAttribute pack_attr_data(lua_State* L, AttrTypeDescription d, const char* attr_name); Tango::DeviceAttribute pack_attr_data(lua_State* L, int idx, AttrTypeDescription d, const char* attr_name);
template<class T> template<class T>
Tango::DeviceAttribute pack_attr_value(const char* name, T value); Tango::DeviceAttribute pack_attr_value(const char* name, T value);