From d8922b93f52d08fb81cc66842b4df80d1d1d9a7e Mon Sep 17 00:00:00 2001 From: Frediano Ziglio Date: Thu, 19 Mar 2020 15:50:45 +0000 Subject: [PATCH 1/9] channel-main: Avoid macro side effects In big endian system GUINT32_TO_LE macro uses the parameter multiple time causing serial to be incremented multiple times instead of one. Avoid side effects using a temporary variable. Signed-off-by: Frediano Ziglio Acked-by: Victor Toso (cherry picked from commit 7363d1a0a640b6992d5967621e37c3376958d708) --- src/channel-main.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/channel-main.c b/src/channel-main.c index 1e85a36..e89b813 100644 --- a/src/channel-main.c +++ b/src/channel-main.c @@ -1384,7 +1384,8 @@ static void agent_clipboard_grab(SpiceMainChannel *channel, guint selection, } if (test_agent_cap(channel, VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL)) { - *(uint32_t *)grab = GUINT32_TO_LE(c->clipboard_serial[selection]++); + uint32_t serial = c->clipboard_serial[selection]++; + *(uint32_t *)grab = GUINT32_TO_LE(serial); grab = (void *)grab + sizeof(uint32_t); } -- 2.26.2