[Spice-devel] [PATCH v4 4/5] tests: test removed triggered timers are not called
Frediano Ziglio
fziglio at redhat.com
Tue Jan 19 03:54:51 PST 2016
This could happen for instance if a given timer remove all clients
which have associated timers.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/tests/test-loop.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/server/tests/test-loop.c b/server/tests/test-loop.c
index 1dc3923..1c2f496 100644
--- a/server/tests/test-loop.c
+++ b/server/tests/test-loop.c
@@ -74,6 +74,19 @@ static void *loop_func(void *arg)
return NULL;
}
+static SpiceTimer *twice_timers[2] = { NULL, NULL };
+static int twice_called = 0;
+static void timer_not_twice(void *opaque)
+{
+ spice_assert(++twice_called == 1);
+
+ /* delete timers, should not have another call */
+ core->timer_remove(twice_timers[0]);
+ core->timer_remove(twice_timers[1]);
+ twice_timers[0] = NULL;
+ twice_timers[1] = NULL;
+}
+
int main(int argc, char **argv)
{
SpiceTimer *timer, *timers[10];
@@ -107,6 +120,14 @@ int main(int argc, char **argv)
timer = timers[i++] = core->timer_add(timer_exit, NULL);
core->timer_start(timer, 10);
+ /* test events are not called when freed */
+ timer = twice_timers[0] = core->timer_add(timer_not_twice, NULL);
+ spice_assert(timer != NULL);
+ core->timer_start(timer, 2);
+ timer = twice_timers[1] = core->timer_add(timer_not_twice, NULL);
+ spice_assert(timer != NULL);
+ core->timer_start(timer, 2);
+
/* run the loop */
loop = g_main_loop_new(basic_event_loop_get_context(), FALSE);
alarm(1);
--
2.4.3
More information about the Spice-devel
mailing list