diff options
| author | Roger Planas <roger.planas@isode.com> | 2017-07-04 11:03:55 (GMT) |
|---|---|---|
| committer | Roger Planas <roger.planas@isode.com> | 2017-10-30 12:25:43 (GMT) |
| commit | c29df10f0ab47db63509634fb1661ff55b8b47b3 (patch) | |
| tree | ebf7486b653b554e3122c3509da17e17ef25f312 /Sluift/client.cpp | |
| parent | ed25c7d2fe46dca4edecd359755b15e16620056e (diff) | |
| download | swift-c29df10f0ab47db63509634fb1661ff55b8b47b3.zip swift-c29df10f0ab47db63509634fb1661ff55b8b47b3.tar.bz2 | |
Sluift: Add support for Lua 5.3
This patch adds support for Lua 5.3, while keeping support for
Lua 5.1 (a build with the bundled Lua succeeds)
Test-information:
Builds cleanly on Lua 5.1, 5.2 and Lua 5.3.
Tests that make use of Sluift work with both Lua 5.2 and Lua 5.3
Change-Id: I4cbe2eb09ec8c753d8624047f5456be1de72c679
Diffstat (limited to 'Sluift/client.cpp')
| -rw-r--r-- | Sluift/client.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Sluift/client.cpp b/Sluift/client.cpp index 75f675d..ae2f610 100644 --- a/Sluift/client.cpp +++ b/Sluift/client.cpp @@ -674,61 +674,61 @@ SLUIFT_LUA_FUNCTION(Client, get_next_event) { return 1; } SLUIFT_LUA_FUNCTION_WITH_HELP( Client, add_contact, "Add a contact to the contact list.", "self\n", "jid The JID of the contact to add\n" "name The name to use in the contact list\n" "groups An array of group names to add the contact to\n") { Sluift::globals.eventLoop.runOnce(); SluiftClient* client = getClient(L); RosterItemPayload item; int timeout = getGlobalTimeout(L); if (lua_type(L, 2) == LUA_TTABLE) { lua_getfield(L, 2, "jid"); const char* rawJID = lua_tostring(L, -1); if (rawJID) { item.setJID(std::string(rawJID)); } lua_getfield(L, 2, "name"); const char* rawName = lua_tostring(L, -1); if (rawName) { item.setName(rawName); } lua_getfield(L, 2, "groups"); if (!lua_isnil(L, -1)) { if (lua_type(L, -1) == LUA_TTABLE) { - for (size_t i = 1; i <= lua_objlen(L, -1); ++i) { + for (size_t i = 1; i <= lua_rawlen(L, -1); ++i) { lua_rawgeti(L, -1, boost::numeric_cast<int>(i)); const char* rawGroup = lua_tostring(L, -1); if (rawGroup) { item.addGroup(rawGroup); } lua_pop(L, 1); } } else { throw Lua::Exception("Groups should be a table"); } } } else { item.setJID(Lua::checkString(L, 2)); } client->getRoster(timeout); if (!client->getClient()->getRoster()->containsJID(item.getJID())) { RosterPayload::ref roster = std::make_shared<RosterPayload>(); roster->addItem(item); Sluift::Response response = client->sendVoidRequest( SetRosterRequest::create(roster, client->getClient()->getIQRouter()), timeout); if (response.error) { return response.convertToLuaResult(L); } } client->getClient()->getSubscriptionManager()->requestSubscription(item.getJID()); lua_pushboolean(L, true); |
Swift