mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-11 13:29:49 -05:00
Use different closures for sending and receiving
Otherwise we can end up overwriting data in the receive buffer as we try to send it.
This commit is contained in:
parent
943741cb40
commit
65772ce18b
1 changed files with 3 additions and 3 deletions
|
|
@ -61,7 +61,7 @@ struct wl_connection {
|
||||||
int fd;
|
int fd;
|
||||||
void *data;
|
void *data;
|
||||||
wl_connection_update_func_t update;
|
wl_connection_update_func_t update;
|
||||||
struct wl_closure closure;
|
struct wl_closure receive_closure, send_closure;
|
||||||
};
|
};
|
||||||
|
|
||||||
union wl_value {
|
union wl_value {
|
||||||
|
|
@ -362,7 +362,7 @@ wl_connection_vmarshal(struct wl_connection *connection,
|
||||||
uint32_t opcode, va_list ap,
|
uint32_t opcode, va_list ap,
|
||||||
const struct wl_message *message)
|
const struct wl_message *message)
|
||||||
{
|
{
|
||||||
struct wl_closure *closure = &connection->closure;
|
struct wl_closure *closure = &connection->send_closure;
|
||||||
struct wl_object **objectp, *object;
|
struct wl_object **objectp, *object;
|
||||||
uint32_t length, *p, *start, size;
|
uint32_t length, *p, *start, size;
|
||||||
int dup_fd;
|
int dup_fd;
|
||||||
|
|
@ -487,7 +487,7 @@ wl_connection_demarshal(struct wl_connection *connection,
|
||||||
int i, count, extra_space;
|
int i, count, extra_space;
|
||||||
struct wl_object **object;
|
struct wl_object **object;
|
||||||
struct wl_array **array;
|
struct wl_array **array;
|
||||||
struct wl_closure *closure = &connection->closure;
|
struct wl_closure *closure = &connection->receive_closure;
|
||||||
|
|
||||||
count = strlen(message->signature) + 2;
|
count = strlen(message->signature) + 2;
|
||||||
if (count > ARRAY_LENGTH(closure->types)) {
|
if (count > ARRAY_LENGTH(closure->types)) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue