From aef69d91fcdf8b3fe307dc5eb14dacd17de94b50 Mon Sep 17 00:00:00 2001 From: Maxime COZZI Date: Fri, 12 Apr 2024 09:02:53 +0200 Subject: [PATCH] fix size management of the result table during filtering --- engine/core/src/routing_table.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/engine/core/src/routing_table.c b/engine/core/src/routing_table.c index 1eb006cb9..5af94fb67 100644 --- a/engine/core/src/routing_table.c +++ b/engine/core/src/routing_table.c @@ -971,7 +971,7 @@ search_result_t *RTFilter_ID(search_result_t *result, uint16_t id) if (result->result_table[entry_nbr]->id != id) { // if we find an other id, erase it from the research table - memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr)); + memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr - 1)); result->result_nbr--; } else @@ -1006,7 +1006,7 @@ search_result_t *RTFilter_Type(search_result_t *result, luos_type_t type) if (result->result_table[entry_nbr]->type != type) { // if we find an other type, erase it from the research table - memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr)); + memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr - 1)); result->result_nbr--; } else @@ -1042,7 +1042,7 @@ search_result_t *RTFilter_Node(search_result_t *result, uint16_t node_id) if (RoutingTB_NodeIDFromID(result->result_table[entry_nbr]->id) != node_id) { // if we find an other node_id, erase it from the research table - memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr)); + memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr - 1)); result->result_nbr--; } else @@ -1078,7 +1078,7 @@ search_result_t *RTFilter_Alias(search_result_t *result, char *alias) if (strstr(result->result_table[entry_nbr]->alias, alias) == 0) { // if we find an other node_id, erase it from the research table - memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr)); + memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr - 1)); result->result_nbr--; } else @@ -1114,7 +1114,7 @@ search_result_t *RTFilter_Service(search_result_t *result, service_t *service) if (result->result_table[entry_nbr]->id != service->id) { // if we find an other id, erase it from the research table - memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr)); + memcpy(&result->result_table[entry_nbr], &result->result_table[entry_nbr + 1], sizeof(routing_table_t *) * (result->result_nbr - entry_nbr - 1)); result->result_nbr--; } else