[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r36699 - gnunet/src/rps
From: |
gnunet |
Subject: |
[GNUnet-SVN] r36699 - gnunet/src/rps |
Date: |
Mon, 30 Nov 2015 22:51:49 +0100 |
Author: ch3
Date: 2015-11-30 22:51:49 +0100 (Mon, 30 Nov 2015)
New Revision: 36699
Modified:
gnunet/src/rps/gnunet-service-rps_view.c
Log:
-fix of issues in helper for "view"
Signed-off-by: Julius Bunger <address@hidden>
Modified: gnunet/src/rps/gnunet-service-rps_view.c
===================================================================
--- gnunet/src/rps/gnunet-service-rps_view.c 2015-11-30 21:51:45 UTC (rev
36698)
+++ gnunet/src/rps/gnunet-service-rps_view.c 2015-11-30 21:51:49 UTC (rev
36699)
@@ -175,25 +175,23 @@
View_remove_peer (const struct GNUNET_PeerIdentity *peer)
{
uint32_t *index;
+ uint32_t *index_swap;
- if (GNUNET_YES == View_contains_peer (peer))
+ if (GNUNET_NO == View_contains_peer (peer))
{
- index = GNUNET_CONTAINER_multipeermap_get (mpm, peer);
- GNUNET_assert (NULL != index);
- if (*index == GNUNET_CONTAINER_multipeermap_size (mpm) - 1)
- { /* Last peer in array - simply remove */
- }
- else
- { /* Fill the 'gap' in the array with the last peer */
- array[*index] = array[View_size ()];
- }
- GNUNET_CONTAINER_multipeermap_remove_all (mpm, peer);
- return GNUNET_OK;
- }
- else
- {
return GNUNET_NO;
}
+ index = GNUNET_CONTAINER_multipeermap_get (mpm, peer);
+ GNUNET_assert (NULL != index);
+ if (*index < (View_size () - 1) )
+ { /* Fill the 'gap' in the array with the last peer */
+ array[*index] = array[(View_size () - 1)];
+ index_swap = GNUNET_CONTAINER_multipeermap_get (mpm, &array[View_size ()]);
+ *index_swap = *index;
+ GNUNET_free (index);
+ }
+ GNUNET_CONTAINER_multipeermap_remove_all (mpm, peer);
+ return GNUNET_OK;
}
/**
@@ -230,14 +228,16 @@
uint32_t i;
uint32_t *index;
- for (i = 0; i < GNUNET_CONTAINER_multipeermap_size (mpm); i++)
+ for (i = 0; 0 < View_size (); i++)
{ /* Need to free indices stored at peers */
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_contains (mpm, &array[i]));
index = GNUNET_CONTAINER_multipeermap_get (mpm, &array[i]);
GNUNET_assert (NULL != index);
GNUNET_free (index);
GNUNET_CONTAINER_multipeermap_remove_all (mpm, &array[i]);
}
- GNUNET_assert (0 == GNUNET_CONTAINER_multipeermap_size (mpm));
+ GNUNET_assert (0 == View_size ());
}
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r36699 - gnunet/src/rps,
gnunet <=