server: Set a proper error code when dup_fd_object fails.
diff --git a/server/fd.c b/server/fd.c
index e26ce04..ca317c4 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -1628,6 +1628,7 @@
         if (!closed) goto failed;
         if ((fd->unix_fd = dup( orig->unix_fd )) == -1)
         {
+            file_set_error();
             free( closed );
             goto failed;
         }
@@ -1637,8 +1638,11 @@
         fd->inode = (struct inode *)grab_object( orig->inode );
         list_add_head( &fd->inode->open, &fd->inode_entry );
     }
-    else if ((fd->unix_fd = dup( orig->unix_fd )) == -1) goto failed;
-
+    else if ((fd->unix_fd = dup( orig->unix_fd )) == -1)
+    {
+        file_set_error();
+        goto failed;
+    }
     return fd;
 
 failed: