forked from daneos/lutango
fix stack indexes
This commit is contained in:
parent
0d667035d3
commit
5f138b362b
@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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__ */
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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[]
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user