From 5689da2c7924bdb0c4777ea9cf8b964f4f81ceef Mon Sep 17 00:00:00 2001 From: Nicolas Rabault Date: Mon, 12 Feb 2024 13:47:42 +0100 Subject: [PATCH] Allow nodes with no services --- engine/core/src/service.c | 5 +++++ tool_services/gate/TinyJSON/convert.c | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/engine/core/src/service.c b/engine/core/src/service.c index a86c2b1da..7cab862a7 100644 --- a/engine/core/src/service.c +++ b/engine/core/src/service.c @@ -120,6 +120,11 @@ void Service_ClearId(void) ******************************************************************************/ uint16_t Service_GetIndex(service_t *service) { + if (service_ctx.number == 0) + { + // We don't have any service just return 0 by default. + return 0; + } LUOS_ASSERT((service >= service_ctx.list) && (service < &service_ctx.list[service_ctx.number])); return ((uintptr_t)service - (uintptr_t)service_ctx.list) / sizeof(service_t); } diff --git a/tool_services/gate/TinyJSON/convert.c b/tool_services/gate/TinyJSON/convert.c index f115e96ea..4f0043c27 100644 --- a/tool_services/gate/TinyJSON/convert.c +++ b/tool_services/gate/TinyJSON/convert.c @@ -1049,11 +1049,13 @@ void Convert_RoutingTableData(service_t *service) json_ptr += strlen(json_ptr); i++; + bool find_service = false; // Services loop while (i < last_entry) { if (routing_table[i].mode == SERVICE) { + find_service = true; // Create service description sprintf(json_ptr, "{\"type\":\"%s\",\"id\":%d,\"alias\":\"%s\"},", Convert_StringFromType(routing_table[i].type), routing_table[i].id, routing_table[i].alias); json_ptr += strlen(json_ptr); @@ -1062,8 +1064,11 @@ void Convert_RoutingTableData(service_t *service) else break; } - // remove the last "," char - *(--json_ptr) = '\0'; + if (find_service) + { + // remove the last "," char + *(--json_ptr) = '\0'; + } sprintf(json_ptr, "]},"); json_ptr += strlen(json_ptr); }