From 8f5ca512b8b118b3613b17284b28fe07c7c05d5c Mon Sep 17 00:00:00 2001 From: EngineerSmith Date: Tue, 9 May 2023 17:46:02 +0100 Subject: [PATCH] added variant for enet peer_send and host_broadcast to take light userdata and a size than just a lua string --- changes.txt | 1 + src/libraries/enet/enet.cpp | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/changes.txt b/changes.txt index f7b9c1c6f..70d13a8a4 100644 --- a/changes.txt +++ b/changes.txt @@ -79,6 +79,7 @@ Released: N/A * Added love.sensor module. * Added love.sensorupdated callback. * Added love.joysticksensorupdated callback. +* Added variant for enet peer:send and host:broadcast which accepts a pointer (light userdata) and a size. * Changed love.filesystem.exists to no longer be deprecated. * Changed the default font from Vera size 12 to Noto Sans size 13. diff --git a/src/libraries/enet/enet.cpp b/src/libraries/enet/enet.cpp index 2e1b8ebc0..218c09fe5 100644 --- a/src/libraries/enet/enet.cpp +++ b/src/libraries/enet/enet.cpp @@ -234,12 +234,21 @@ static void push_event(lua_State *l, ENetEvent *event) { /** * Read a packet off the stack as a string - * idx is position of string + * idx is position of string or lightuserdata */ static ENetPacket *read_packet(lua_State *l, int idx, enet_uint8 *channel_id) { size_t size; int argc = lua_gettop(l); - const void *data = luaL_checklstring(l, idx, &size); + const void* data; + + if (lua_islightuserdata(l, idx)) { + data = lua_touserdata(l, idx); + size = (size_t) luaL_checknumber(l, idx + 1); + idx++; + } + else { + data = luaL_checklstring(l, idx, &size); + } ENetPacket *packet; enet_uint32 flags = ENET_PACKET_FLAG_RELIABLE;