Put the fd in the closure so debugging can print it

dev
Kristian Høgsberg 14 years ago
parent 65772ce18b
commit 5029a13283
  1. 8
      wayland/connection.c

@ -369,7 +369,7 @@ wl_connection_vmarshal(struct wl_connection *connection,
struct wl_array **arrayp, *array;
const char **sp, *s;
char *extra;
int i, count, fd, extra_size;
int i, count, fd, extra_size, *fd_ptr;
extra_size = wl_message_size_extra(message);
count = strlen(message->signature) + 2;
@ -449,12 +449,18 @@ wl_connection_vmarshal(struct wl_connection *connection,
break;
case 'h':
closure->types[i] = &ffi_type_sint;
closure->args[i] = extra;
fd_ptr = (int *) extra;
extra += sizeof *fd_ptr;
fd = va_arg(ap, int);
dup_fd = dup(fd);
if (dup_fd < 0) {
fprintf(stderr, "dup failed: %m");
abort();
}
*fd_ptr = dup_fd;
wl_buffer_put(&connection->fds_out,
&dup_fd, sizeof dup_fd);
break;

Loading…
Cancel
Save