blob: 72e1ca319c17fed06d891b8cc208e935c1ad851b [file] [log] [blame]
From aee23e155474cb3001a8224b247cb6ded7e1f4a3 Mon Sep 17 00:00:00 2001
From: Fergus Dall <sidereal@google.com>
Date: Tue, 22 Jun 2021 20:05:47 +1000
Subject: [PATCH 1/2] connection-test: Encode size in message headers correctly
In these tests, message sizes are inconsistently encoded in either the upper
or lower 16 bits of the second word of the message. Resolve this in favour
of using the upper 16 bits, as this is how messages are supposed to be
encoded, even though that aspect of message decoding isn't being tested
here.
Signed-off-by: Fergus Dall <sidereal@google.com>
---
tests/connection-test.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tests/connection-test.c b/tests/connection-test.c
index c04845b..669d73b 100644
--- a/tests/connection-test.c
+++ b/tests/connection-test.c
@@ -394,7 +394,7 @@ demarshal(struct marshal_data *data, const char *format,
struct wl_closure *closure;
struct wl_map objects;
struct wl_object object = { NULL, &func, 0 };
- int size = msg[1];
+ int size = msg[1] >> 16;
assert(write(data->s[1], msg, size) == size);
assert(wl_connection_read(data->read_connection) == size);
@@ -417,39 +417,39 @@ TEST(connection_demarshal)
data.value.u = 8000;
msg[0] = 400200; /* object id */
- msg[1] = 12; /* size = 12, opcode = 0 */
+ msg[1] = 12 << 16; /* size = 12, opcode = 0 */
msg[2] = data.value.u;
demarshal(&data, "u", msg, (void *) validate_demarshal_u);
data.value.i = -557799;
msg[0] = 400200;
- msg[1] = 12;
+ msg[1] = 12 << 16;
msg[2] = data.value.i;
demarshal(&data, "i", msg, (void *) validate_demarshal_i);
data.value.s = "superdude";
msg[0] = 400200;
- msg[1] = 24;
+ msg[1] = 24 << 16;
msg[2] = 10;
memcpy(&msg[3], data.value.s, msg[2]);
demarshal(&data, "s", msg, (void *) validate_demarshal_s);
data.value.s = "superdude";
msg[0] = 400200;
- msg[1] = 24;
+ msg[1] = 24 << 16;
msg[2] = 10;
memcpy(&msg[3], data.value.s, msg[2]);
demarshal(&data, "?s", msg, (void *) validate_demarshal_s);
data.value.i = wl_fixed_from_double(-90000.2390);
msg[0] = 400200;
- msg[1] = 12;
+ msg[1] = 12 << 16;
msg[2] = data.value.i;
demarshal(&data, "f", msg, (void *) validate_demarshal_f);
data.value.s = NULL;
msg[0] = 400200;
- msg[1] = 12;
+ msg[1] = 12 << 16;
msg[2] = 0;
demarshal(&data, "?s", msg, (void *) validate_demarshal_s);
--
2.32.0.93.g670b81a890-goog