summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-05-19 02:51:00 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-05-19 02:51:00 +0000
commit95875d996661369faa2647846c8168fed625a961 (patch)
tree4712aebd3077df01d29f99800d14265d79d06d04
parent55041d6f3d17a8e505e7cdcfdb1256fcc31a0cb7 (diff)
downloadphp-git-95875d996661369faa2647846c8168fed625a961.tar.gz
Fixed bug #37505 (touch() truncates large files).
-rw-r--r--NEWS1
-rw-r--r--ext/standard/filestat.c4
2 files changed, 2 insertions, 3 deletions
diff --git a/NEWS b/NEWS
index 7de2226562..c072888ff7 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,7 @@ PHP NEWS
- Added RFC2397 (data: stream) support. (Marcus)
- Fixed bug #37510 (session_regenerate_id changes session_id() even on
failure). (Hannes)
+- Fixed bug #37505 (touch() truncates large files). (Ilia)
- Fixed bug #37487 (oci_fetch_array() array-type should always default to
OCI_BOTH). (Tony)
- Fixed bug #37395 (recursive mkdir() fails to create nonexistent directories
diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c
index 8d40561c51..d19a29f67c 100644
--- a/ext/standard/filestat.c
+++ b/ext/standard/filestat.c
@@ -538,7 +538,6 @@ PHP_FUNCTION(touch)
{
zval **filename, **filetime, **fileatime;
int ret;
- struct stat sb;
FILE *file;
struct utimbuf newtimebuf;
struct utimbuf *newtime = NULL;
@@ -575,8 +574,7 @@ PHP_FUNCTION(touch)
}
/* create the file if it doesn't exist already */
- ret = VCWD_STAT(Z_STRVAL_PP(filename), &sb);
- if (ret == -1) {
+ if (VCWD_ACCESS(Z_STRVAL_PP(filename), F_OK) != 0) {
file = VCWD_FOPEN(Z_STRVAL_PP(filename), "w");
if (file == NULL) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to create file %s because %s", Z_STRVAL_PP(filename), strerror(errno));