X-Git-Url: http://git.sven.stormbind.net/?p=sven%2Fexfat-utils.git;a=blobdiff_plain;f=libexfat%2Fnode.c;h=4dd4dc6a4c6085a8a8f3622609951451aa7b2d87;hp=d05f20dc15aecb729c52557186a778eb8530e368;hb=0851763ab394b718156526df2ebc1412e5b0f8b0;hpb=0bc23c177c8ab35b8fdf4da503b9fa285400b0e6 diff --git a/libexfat/node.c b/libexfat/node.c index d05f20d..4dd4dc6 100644 --- a/libexfat/node.c +++ b/libexfat/node.c @@ -1129,6 +1129,16 @@ int exfat_rename(struct exfat* ef, const char* old_path, const char* new_path) } exfat_put_node(ef, existing); if (rc != 0) + { + /* free clusters even if something went wrong; overwise they + will be just lost */ + exfat_cleanup_node(ef, existing); + exfat_put_node(ef, dir); + exfat_put_node(ef, node); + return rc; + } + rc = exfat_cleanup_node(ef, existing); + if (rc != 0) { exfat_put_node(ef, dir); exfat_put_node(ef, node);