forked from daneos/lutango
fix stack indexes
This commit is contained in:
parent
0d667035d3
commit
5f138b362b
@ -1,7 +1,7 @@
|
||||
#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");
|
||||
return *(void**)lua_touserdata(L, n);
|
||||
return *(void**)lua_touserdata(L, idx);
|
||||
}
|
||||
|
||||
@ -4,6 +4,6 @@
|
||||
#include <core/lua.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__ */
|
||||
|
||||
@ -166,7 +166,7 @@ int lut_DeviceProxy_newindex(lua_State* L)
|
||||
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);
|
||||
|
||||
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)
|
||||
{
|
||||
@ -253,49 +253,49 @@ Tango::DeviceAttribute pack_attr_data(lua_State* L, AttrTypeDescription d, const
|
||||
|
||||
case 1: // bool
|
||||
// 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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
case 8: // string
|
||||
case 9: // char[]
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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);
|
||||
|
||||
// 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>
|
||||
Tango::DeviceAttribute pack_attr_value(const char* name, T value);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user