mirror of
https://github.com/TokTok/c-toxcore
synced 2026-09-17 08:04:58 +00:00
refactor: Make add_to_list non-recursive.
This commit is contained in:
+13
-10
@@ -601,27 +601,30 @@ bool add_to_list(
|
||||
Node_format *nodes_list, uint32_t length, const uint8_t pk[CRYPTO_PUBLIC_KEY_SIZE],
|
||||
const IP_Port *ip_port, const uint8_t cmp_pk[CRYPTO_PUBLIC_KEY_SIZE])
|
||||
{
|
||||
uint8_t pk_cur[CRYPTO_PUBLIC_KEY_SIZE];
|
||||
memcpy(pk_cur, pk, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
IP_Port ip_port_cur = *ip_port;
|
||||
|
||||
bool inserted = false;
|
||||
|
||||
for (uint32_t i = 0; i < length; ++i) {
|
||||
Node_format *node = &nodes_list[i];
|
||||
|
||||
if (id_closest(cmp_pk, node->public_key, pk) == 2) {
|
||||
if (id_closest(cmp_pk, node->public_key, pk_cur) == 2) {
|
||||
uint8_t pk_bak[CRYPTO_PUBLIC_KEY_SIZE];
|
||||
memcpy(pk_bak, node->public_key, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
|
||||
const IP_Port ip_port_bak = node->ip_port;
|
||||
memcpy(node->public_key, pk, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
|
||||
node->ip_port = *ip_port;
|
||||
memcpy(node->public_key, pk_cur, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
node->ip_port = ip_port_cur;
|
||||
|
||||
if (i != length - 1) {
|
||||
add_to_list(nodes_list, length, pk_bak, &ip_port_bak, cmp_pk);
|
||||
}
|
||||
|
||||
return true;
|
||||
memcpy(pk_cur, pk_bak, CRYPTO_PUBLIC_KEY_SIZE);
|
||||
ip_port_cur = ip_port_bak;
|
||||
inserted = true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return inserted;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user