diff -ruN xrdp-0.9.14-v/sesman/chansrv/chansrv_fuse.c xrdp-0.9.14/sesman/chansrv/chansrv_fuse.c --- xrdp-0.9.14-v/sesman/chansrv/chansrv_fuse.c 2020-06-26 21:13:58.000000000 +1000 +++ xrdp-0.9.14/sesman/chansrv/chansrv_fuse.c 2020-08-31 20:24:21.516983364 +1000 @@ -1607,7 +1607,7 @@ log_error("inode %ld is not valid", ino); fuse_reply_err(req, ENOENT); } - else if ((dh = (struct xfs_dir_handle *) fi->fh) == NULL) + else if ((dh = (struct xfs_dir_handle *) (unsigned long)fi->fh) == NULL) { /* something seriously wrong somewhere! */ fuse_reply_buf(req, 0, 0); @@ -2095,7 +2095,7 @@ log_debug("want_bytes %zd bytes at off %lld", size, (long long) off); - if ((fh = (XFUSE_HANDLE *)fi->fh) == NULL) + if ((fh = (XFUSE_HANDLE *) (unsigned long)fi->fh) == NULL) { fuse_reply_err(req, EINVAL); } @@ -2168,7 +2168,7 @@ log_debug("write %zd bytes at off %lld to inode=%ld", size, (long long) off, ino); - if ((fh = (XFUSE_HANDLE *)fi->fh) == NULL) + if ((fh = (XFUSE_HANDLE *) (unsigned long)fi->fh) == NULL) { log_error("file handle fi->fh is NULL"); fuse_reply_err(req, EINVAL); @@ -2436,7 +2436,7 @@ static void xfuse_cb_releasedir(fuse_req_t req, fuse_ino_t ino, struct fuse_file_info *fi) { - struct xfs_dir_handle *dh = (struct xfs_dir_handle *) fi->fh; + struct xfs_dir_handle *dh = (struct xfs_dir_handle *) (unsigned long)fi->fh; xfs_closedir(g_xfs, dh); fuse_reply_err(req, 0); }