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;
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;