com php-src: fix occasional fail in zip_close when target arc exists: ext/zip/lib/zip_source_filep.c

From: Date: Wed, 19 Aug 2015 13:23:21 +0000
Subject: com php-src: fix occasional fail in zip_close when target arc exists: ext/zip/lib/zip_source_filep.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-88684@lists.php.net to get a copy of this message
Commit: ed78d59a1dc9d84cf6ce77fbad94ab7e2f860cb5 Author: Anatol Belski <ab@php.net> Wed, 19 Aug 2015 15:19:44 +0200 Parents: c97427ea8e7a0ca232d81ec74aac39c5ed07037d Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ed78d59a1dc9d84cf6ce77fbad94ab7e2f860cb5 Log: fix occasional fail in zip_close when target arc exists Changed paths: M ext/zip/lib/zip_source_filep.c Diff: diff --git a/ext/zip/lib/zip_source_filep.c b/ext/zip/lib/zip_source_filep.c index e541305..f99da22 100644 --- a/ext/zip/lib/zip_source_filep.c +++ b/ext/zip/lib/zip_source_filep.c @@ -43,6 +43,7 @@ #ifdef _WIN32 /* WIN32 needs <fcntl.h> for _O_BINARY */ #include <fcntl.h> +#include <windows.h> #endif /* Windows sys/types.h does not provide these */ @@ -248,10 +249,17 @@ read_file(void *state, void *data, zip_uint64_t len, zip_source_cmd_t cmd) zip_error_set(&ctx->error, ZIP_ER_WRITE, errno); } ctx->fout = NULL; +#ifdef _WIN32 + if (!MoveFileEx(ctx->tmpname, ctx->fname, MOVEFILE_REPLACE_EXISTING)) { + zip_error_set(&ctx->error, ZIP_ER_RENAME, GetLastError()); + return -1; + } +#else if (rename(ctx->tmpname, ctx->fname) < 0) { zip_error_set(&ctx->error, ZIP_ER_RENAME, errno); return -1; } +#endif mask = umask(022); umask(mask); /* not much we can do if chmod fails except make the whole commit fail */

« previous php.cvs (#88684) next »