From 0359f6c62439af960a7dbbeffc4dfec6c988df84 Mon Sep 17 00:00:00 2001 From: Tanu Kaskinen Date: Tue, 14 Aug 2012 17:08:37 +0300 Subject: [PATCH] object: Get rid of "warning: cast increases required alignment of target type" On ARM, pa_object has less strict alignment requirements than e.g. pa_sink and pa_source, so when pa_object is cast to pa_sink, the compiler thinks that it's unsafe. In this case, however, the pointer given to pa_sink_ref() was a pa_sink pointer to begin with, so casting it first to pa_object and then back to pa_sink is entirely safe. This particular source of warnings is extremely annoying, because this message is printed for any compilation unit that includes sink.h, source.h or any other header that defines a class, and the message tends to get printed multiple times for one compilation unit: In file included from ./pulsecore/source-output.h:37:0, from ./pulsecore/source.h:49, from ./pulsecore/sink.h:40, from ./pulsecore/core.h:50, from daemon/daemon-conf.h:31, from daemon/cmdline.h:25, from daemon/cmdline.c:38: ./pulsecore/sink-input.h: In function 'pa_sink_input_ref': ./pulsecore/sink-input.h:245:1: warning: cast increases required alignment of target type [-Wcast-align] --- src/pulsecore/object.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pulsecore/object.h b/src/pulsecore/object.h index 1ddce3b4d..8be429ee4 100644 --- a/src/pulsecore/object.h +++ b/src/pulsecore/object.h @@ -79,7 +79,7 @@ static inline pa_object* pa_object_cast(void *o) { return (c*) o; \ } \ static inline c* c##_ref(c *o) { \ - return (c*) pa_object_ref(PA_OBJECT(o)); \ + return (c *) ((void *) pa_object_ref(PA_OBJECT(o))); \ } \ static inline void c##_unref(c* o) { \ pa_object_unref(PA_OBJECT(o)); \