[Spice-devel] [PATCH v2] Constify event_loop_core
Frediano Ziglio
fziglio at redhat.com
Fri Jun 24 07:54:48 UTC 2016
Was used as write variable only for testing.
Avoid usage of not constant globals.
Making globals constants avoid future race condition
usages.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/event-loop.c | 6 +++---
server/red-common.h | 2 +-
server/tests/basic_event_loop.c | 20 +++++++++++---------
3 files changed, 15 insertions(+), 13 deletions(-)
Changes from v1:
- fixed typo in comment;
- extented commit comment.
diff --git a/server/event-loop.c b/server/event-loop.c
index 4738ed9..1b57460 100644
--- a/server/event-loop.c
+++ b/server/event-loop.c
@@ -17,9 +17,9 @@
*/
/*
- *This file export a global variable:
+ * This file exports a global variable:
*
- * SpiceCoreInterfaceInternal event_loop_core;
+ * const SpiceCoreInterfaceInternal event_loop_core;
*/
#include "red-common.h"
@@ -168,7 +168,7 @@ static void watch_remove(SpiceWatch *watch)
free(watch);
}
-SpiceCoreInterfaceInternal event_loop_core = {
+const SpiceCoreInterfaceInternal event_loop_core = {
.timer_add = timer_add,
.timer_start = timer_start,
.timer_cancel = timer_cancel,
diff --git a/server/red-common.h b/server/red-common.h
index 7add3d0..7ab7e15 100644
--- a/server/red-common.h
+++ b/server/red-common.h
@@ -58,7 +58,7 @@ struct SpiceCoreInterfaceInternal {
GMainContext *main_context;
};
-extern SpiceCoreInterfaceInternal event_loop_core;
+extern const SpiceCoreInterfaceInternal event_loop_core;
typedef struct RedsState RedsState;
diff --git a/server/tests/basic_event_loop.c b/server/tests/basic_event_loop.c
index b9e1b9c..4820387 100644
--- a/server/tests/basic_event_loop.c
+++ b/server/tests/basic_event_loop.c
@@ -36,6 +36,7 @@ int debug = 0;
} \
}
+static SpiceCoreInterfaceInternal base_core_interface;
static GMainContext *main_context = NULL;
GMainContext *basic_event_loop_get_context(void)
@@ -69,12 +70,12 @@ static void ignore_sigpipe(void)
static SpiceTimer* base_timer_add(SpiceTimerFunc func, void *opaque)
{
- return event_loop_core.timer_add(&event_loop_core, func, opaque);
+ return base_core_interface.timer_add(&base_core_interface, func, opaque);
}
static SpiceWatch *base_watch_add(int fd, int event_mask, SpiceWatchFunc func, void *opaque)
{
- return event_loop_core.watch_add(&event_loop_core, fd, event_mask, func, opaque);
+ return base_core_interface.watch_add(&base_core_interface, fd, event_mask, func, opaque);
}
static SpiceCoreInterface core = {
@@ -91,13 +92,14 @@ SpiceCoreInterface *basic_event_loop_init(void)
ignore_sigpipe();
spice_assert(main_context == NULL);
main_context = g_main_context_new();
- core.timer_start = event_loop_core.timer_start;
- core.timer_cancel = event_loop_core.timer_cancel;
- core.timer_remove = event_loop_core.timer_remove;
- core.watch_update_mask = event_loop_core.watch_update_mask;
- core.watch_remove = event_loop_core.watch_remove;
- event_loop_core.channel_event = core.channel_event = event_loop_channel_event;
- event_loop_core.main_context = main_context;
+ base_core_interface = event_loop_core;
+ core.timer_start = base_core_interface.timer_start;
+ core.timer_cancel = base_core_interface.timer_cancel;
+ core.timer_remove = base_core_interface.timer_remove;
+ core.watch_update_mask = base_core_interface.watch_update_mask;
+ core.watch_remove = base_core_interface.watch_remove;
+ base_core_interface.channel_event = core.channel_event = event_loop_channel_event;
+ base_core_interface.main_context = main_context;
return &core;
}
--
2.7.4
More information about the Spice-devel
mailing list