iliaa           Mon Nov 12 18:47:46 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/main/streams       plain_wrapper.c 
    /php-src/ext/standard       file.c 
    /php-src    NEWS 
  Log:
  
  Fixed bug #43182 (file_put_contents() LOCK_EX does not work properly on 
  file 
  
http://cvs.php.net/viewvc.cgi/php-src/main/streams/plain_wrapper.c?r1=1.52.2.6.2.25&r2=1.52.2.6.2.26&diff_format=u
Index: php-src/main/streams/plain_wrapper.c
diff -u php-src/main/streams/plain_wrapper.c:1.52.2.6.2.25 
php-src/main/streams/plain_wrapper.c:1.52.2.6.2.26
--- php-src/main/streams/plain_wrapper.c:1.52.2.6.2.25  Thu Nov  1 17:32:26 2007
+++ php-src/main/streams/plain_wrapper.c        Mon Nov 12 18:47:46 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: plain_wrapper.c,v 1.52.2.6.2.25 2007/11/01 17:32:26 jani Exp $ */
+/* $Id: plain_wrapper.c,v 1.52.2.6.2.26 2007/11/12 18:47:46 iliaa Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -63,6 +63,9 @@
                case 'x':
                        flags = O_CREAT|O_EXCL;
                        break;
+               case 'c':
+                       flags = O_CREAT;
+                       break;
                default:
                        /* unknown mode */
                        return FAILURE;
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/file.c?r1=1.409.2.6.2.28&r2=1.409.2.6.2.29&diff_format=u
Index: php-src/ext/standard/file.c
diff -u php-src/ext/standard/file.c:1.409.2.6.2.28 
php-src/ext/standard/file.c:1.409.2.6.2.29
--- php-src/ext/standard/file.c:1.409.2.6.2.28  Tue Sep  4 12:51:49 2007
+++ php-src/ext/standard/file.c Mon Nov 12 18:47:46 2007
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: file.c,v 1.409.2.6.2.28 2007/09/04 12:51:49 iliaa Exp $ */
+/* $Id: file.c,v 1.409.2.6.2.29 2007/11/12 18:47:46 iliaa Exp $ */
 
 /* Synced with php 3.0 revision 1.218 1999-06-16 [ssb] */
 
@@ -592,6 +592,7 @@
        zval *zcontext = NULL;
        php_stream_context *context = NULL;
        php_stream *srcstream = NULL;
+       char mode[3] = "wb";
        
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sz/|lr!", 
&filename, &filename_len, 
                                &data, &flags, &zcontext) == FAILURE) {
@@ -604,8 +605,14 @@
 
        context = php_stream_context_from_zval(zcontext, flags & 
PHP_FILE_NO_DEFAULT_CONTEXT);
 
-       stream = php_stream_open_wrapper_ex(filename, (flags & PHP_FILE_APPEND) 
? "ab" : "wb", 
-                       ((flags & PHP_FILE_USE_INCLUDE_PATH) ? USE_PATH : 0) | 
ENFORCE_SAFE_MODE | REPORT_ERRORS, NULL, context);
+       if (flags & PHP_FILE_APPEND) {
+               mode[0] = 'a';
+       } else if (flags & LOCK_EX) {
+               mode[0] = 'c';
+       }
+       mode[2] = '\0';
+
+       stream = php_stream_open_wrapper_ex(filename, mode, ((flags & 
PHP_FILE_USE_INCLUDE_PATH) ? USE_PATH : 0) | ENFORCE_SAFE_MODE | REPORT_ERRORS, 
NULL, context);
        if (stream == NULL) {
                RETURN_FALSE;
        }
@@ -615,6 +622,10 @@
                RETURN_FALSE;
        }
 
+       if (mode[0] = 'c') {
+               php_stream_truncate_set_size(stream, 0);
+       }
+
        switch (Z_TYPE_P(data)) {
                case IS_RESOURCE:
                        numbytes = php_stream_copy_to_stream(srcstream, stream, 
PHP_STREAM_COPY_ALL);
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1005&r2=1.2027.2.547.2.1006&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.1005 php-src/NEWS:1.2027.2.547.2.1006
--- php-src/NEWS:1.2027.2.547.2.1005    Mon Nov 12 11:24:13 2007
+++ php-src/NEWS        Mon Nov 12 18:47:46 2007
@@ -3,6 +3,8 @@
 ?? ??? 2008, PHP 5.2.6
 - Fixed bug #43216 (stream_is_local() returns false on "file://"). (Dmitry)
 - Fixed bug #43201 (Crash on using unitialized vals and __get/__set). (Dmitry)
+- Fixed bug #43182 (file_put_contents() LOCK_EX does not work properly on file 
+  truncation). (Ilia)
 - Fixed bug #43175 (__destruct() throwing an exception with __call() causes
   segfault). (Dmitry)
 - Fixed bug #42937 (__call() method not invoked when methods are called on

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to