mirror of
https://github.com/php/php-src.git
synced 2024-11-24 02:15:04 +08:00
Fixed bug #77081 ftruncate() changes seek pointer in c mode
This commit is contained in:
parent
2816a3fdfa
commit
8827cc34cf
3
NEWS
3
NEWS
@ -13,6 +13,9 @@ PHP NEWS
|
||||
. Fixed bug #50675 (SoapClient can't handle object references correctly).
|
||||
(Cameron Porter)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #77081 (ftruncate() changes seek pointer in c mode). (cmb, Anatol)
|
||||
|
||||
- XML:
|
||||
. Fixed bug 71592 (External entity processing never fails). (cmb)
|
||||
|
||||
|
24
ext/standard/tests/file/ftruncate_bug77081.phpt
Normal file
24
ext/standard/tests/file/ftruncate_bug77081.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #77081 ftruncate() changes seek pointer in c mode
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$filename = dirname(__FILE__) . DIRECTORY_SEPARATOR . "test77081";
|
||||
|
||||
file_put_contents($filename, 'foo');
|
||||
$stream = fopen($filename, 'c');
|
||||
ftruncate($stream, 0);
|
||||
var_dump(ftell($stream));
|
||||
fwrite($stream, 'bar');
|
||||
fclose($stream);
|
||||
var_dump(file_get_contents($filename));
|
||||
|
||||
?>
|
||||
--CLEAN--
|
||||
<?php
|
||||
$fn = dirname(__FILE__) . DIRECTORY_SEPARATOR . "test77081";
|
||||
unlink($fn);
|
||||
?>
|
||||
--EXPECT--
|
||||
int(0)
|
||||
string(3) "bar"
|
@ -858,12 +858,13 @@ static int php_stdiop_set_option(php_stream *stream, int option, int value, void
|
||||
return PHP_STREAM_OPTION_RETURN_ERR;
|
||||
}
|
||||
|
||||
LARGE_INTEGER old_sz;
|
||||
if (!GetFileSizeEx(h, &old_sz)) {
|
||||
LARGE_INTEGER sz, old_sz;
|
||||
sz.QuadPart = 0;
|
||||
|
||||
if (!SetFilePointerEx(h, sz, &old_sz, FILE_CURRENT)) {
|
||||
return PHP_STREAM_OPTION_RETURN_ERR;
|
||||
}
|
||||
|
||||
LARGE_INTEGER sz;
|
||||
#if defined(_WIN64)
|
||||
sz.HighPart = (new_size >> 32);
|
||||
sz.LowPart = (new_size & 0xffffffff);
|
||||
|
Loading…
Reference in New Issue
Block a user