]> granicus.if.org Git - php/commitdiff
Fixed bug #71287 (Error message contains hexadecimal instead of decimal number)
authorXinchen Hui <laruence@gmail.com>
Tue, 5 Jan 2016 16:01:44 +0000 (00:01 +0800)
committerXinchen Hui <laruence@gmail.com>
Tue, 5 Jan 2016 16:01:44 +0000 (00:01 +0800)
NEWS
ext/standard/file.c
ext/standard/tests/file/bug71287.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index cc43981a5027e326b7d517855a5826e8bae67595..bfaf241a41041e47d5d81c60420067b1e0d2a4ac 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -23,6 +23,8 @@ PHP                                                                        NEWS
     immediately). (Laruence)
 
 - Standard:
+  . Fixed bug #71287 (Error message contains hexadecimal instead of decimal
+    number). (Laruence)
   . Fixed bug #71264 (file_put_contents() returns unexpected value when 
     filesystem runs full). (Laruence)
   . Fixed bug #71245 (file_get_contents() ignores "header" context option if
index 4f3a6abd1184e9039bd4a011803a53cd79b0bffe..26f5c161cebe2527c9dc86cfedf1220b812af81b 100644 (file)
@@ -642,7 +642,7 @@ PHP_FUNCTION(file_put_contents)
                        if (Z_STRLEN_P(data)) {
                                numbytes = php_stream_write(stream, Z_STRVAL_P(data), Z_STRLEN_P(data));
                                if (numbytes != Z_STRLEN_P(data)) {
-                                       php_error_docref(NULL, E_WARNING, "Only %pl of %zd bytes written, possibly out of free disk space", numbytes, Z_STRLEN_P(data));
+                                       php_error_docref(NULL, E_WARNING, "Only "ZEND_LONG_FMT" of %zd bytes written, possibly out of free disk space", numbytes, Z_STRLEN_P(data));
                                        numbytes = -1;
                                }
                        }
@@ -677,7 +677,7 @@ PHP_FUNCTION(file_put_contents)
                                if (zend_std_cast_object_tostring(data, &out, IS_STRING) == SUCCESS) {
                                        numbytes = php_stream_write(stream, Z_STRVAL(out), Z_STRLEN(out));
                                        if (numbytes != Z_STRLEN(out)) {
-                                               php_error_docref(NULL, E_WARNING, "Only %pd of %zd bytes written, possibly out of free disk space", numbytes, Z_STRLEN(out));
+                                               php_error_docref(NULL, E_WARNING, "Only "ZEND_LONG_FMT" of %zd bytes written, possibly out of free disk space", numbytes, Z_STRLEN(out));
                                                numbytes = -1;
                                        }
                                        zval_dtor(&out);
diff --git a/ext/standard/tests/file/bug71287.phpt b/ext/standard/tests/file/bug71287.phpt
new file mode 100644 (file)
index 0000000..b798782
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+Bug #71287 (Error message contains hexadecimal instead of decimal number)
+--FILE--
+<?php
+class Stream {
+       public function stream_open($path, $mode, $options, $opened_path) {
+               return true;
+       }
+
+       public function stream_write($data) {
+               return strlen($data) - 2;
+       }
+}
+
+stream_wrapper_register('test', Stream::class);
+file_put_contents('test://file.txt', 'foobarbaz');
+?>
+--EXPECTF--
+Warning: file_put_contents(): Only 7 of 9 bytes written, possibly out of free disk space in %sbug71287.php on line %d