From cc99ebf8723976ce86cc75bb92c03b34e32bc428 Mon Sep 17 00:00:00 2001 From: Iampete1 Date: Mon, 17 Jun 2024 21:54:20 +0100 Subject: [PATCH] AP_Scripting: allow logging lua boolean with uint8 format `B` --- libraries/AP_Scripting/lua_bindings.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/libraries/AP_Scripting/lua_bindings.cpp b/libraries/AP_Scripting/lua_bindings.cpp index de82efd870..bc0907ef12 100644 --- a/libraries/AP_Scripting/lua_bindings.cpp +++ b/libraries/AP_Scripting/lua_bindings.cpp @@ -459,11 +459,17 @@ int AP_Logger_Write(lua_State *L) { case 'M': // uint8_t (flight mode) case 'B': { // uint8_t int isnum; - const lua_Integer tmp1 = lua_tointegerx(L, arg_index, &isnum); + lua_Integer tmp1 = lua_tointegerx(L, arg_index, &isnum); if (!isnum || (tmp1 < 0) || (tmp1 > UINT8_MAX)) { - luaM_free(L, buffer); - luaL_argerror(L, arg_index, "argument out of range"); - // no return + // Also allow boolean + if (!isnum && lua_isboolean(L, arg_index)) { + tmp1 = lua_toboolean(L, arg_index); + + } else { + luaM_free(L, buffer); + luaL_argerror(L, arg_index, "argument out of range"); + // no return + } } uint8_t tmp = static_cast(tmp1); memcpy(&buffer[offset], &tmp, sizeof(uint8_t));