Jinoh Kang (@iamahuman) commented about server/fd.c:
+ file_set_error(); + unlinkat( dirfd, tmpname, 0 ); + goto ret; + } + + break; + } + + /* directories can't have hardlinks, so just rename it to tmpname */ + if (!renameat( dirfd, srcname, dirfd, tmpname )) + break; + if (errno != EEXIST && errno != ENOTDIR && errno != ENOTEMPTY) + { + file_set_error(); + goto ret; + } To elaborate on my suggestion (untested):
```suggestion:-6+0 if (mkdirat( dirfd, tmpname, 0777 )) { if (errno == EEXIST) continue; file_set_error(); goto ret; } if (renameat( dirfd, srcname, dirfd, tmpname )) { file_set_error(); unlinkat( dirfd, tmpname, AT_REMOVEDIR ); goto ret; } break; ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6855#note_98079