mirror of
https://github.com/php/php-src.git
synced 2024-09-23 02:47:26 +00:00
Merge branch 'PHP-5.6'
This commit is contained in:
commit
7137775ec2
@ -2848,6 +2848,27 @@ SPL_METHOD(SplFileObject, fwrite)
|
||||
RETURN_LONG(php_stream_write(intern->u.file.stream, str, str_len));
|
||||
} /* }}} */
|
||||
|
||||
SPL_METHOD(SplFileObject, fread)
|
||||
{
|
||||
spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC);
|
||||
long length = 0;
|
||||
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &length) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (length <= 0) {
|
||||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter must be greater than 0");
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
Z_STRVAL_P(return_value) = emalloc(length + 1);
|
||||
Z_STRLEN_P(return_value) = php_stream_read(intern->u.file.stream, Z_STRVAL_P(return_value), length);
|
||||
|
||||
Z_STRVAL_P(return_value)[length] = 0;
|
||||
Z_TYPE_P(return_value) = IS_STRING;
|
||||
}
|
||||
|
||||
/* {{{ proto bool SplFileObject::fstat()
|
||||
Stat() on a filehandle */
|
||||
FileFunction(fstat)
|
||||
@ -2948,6 +2969,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fwrite, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, length)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_fread, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, length)
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_file_object_ftruncate, 0, 0, 1)
|
||||
ZEND_ARG_INFO(0, size)
|
||||
ZEND_END_ARG_INFO()
|
||||
@ -2975,6 +3000,7 @@ static const zend_function_entry spl_SplFileObject_functions[] = {
|
||||
SPL_ME(SplFileObject, fgetss, arginfo_file_object_fgetss, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, fscanf, arginfo_file_object_fscanf, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, fwrite, arginfo_file_object_fwrite, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, fread, arginfo_file_object_fread, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, fstat, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, ftruncate, arginfo_file_object_ftruncate, ZEND_ACC_PUBLIC)
|
||||
SPL_ME(SplFileObject, current, arginfo_splfileinfo_void, ZEND_ACC_PUBLIC)
|
||||
|
23
ext/spl/tests/bug65545.phpt
Normal file
23
ext/spl/tests/bug65545.phpt
Normal file
@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
SplFileObject::fread function
|
||||
--FILE--
|
||||
<?php
|
||||
$obj = new SplFileObject(__FILE__, 'r');
|
||||
$data = $obj->fread(5);
|
||||
var_dump($data);
|
||||
|
||||
$data = $obj->fread();
|
||||
var_dump($data);
|
||||
|
||||
$data = $obj->fread(0);
|
||||
var_dump($data);
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(5) "<?php"
|
||||
|
||||
Warning: SplFileObject::fread() expects exactly 1 parameter, 0 given in %s on line %d
|
||||
NULL
|
||||
|
||||
Warning: SplFileObject::fread(): Length parameter must be greater than 0 in %s on line %d
|
||||
bool(false)
|
Loading…
Reference in New Issue
Block a user