mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +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).
|
. Fixed bug #50675 (SoapClient can't handle object references correctly).
|
||||||
(Cameron Porter)
|
(Cameron Porter)
|
||||||
|
|
||||||
|
- Standard:
|
||||||
|
. Fixed bug #77081 (ftruncate() changes seek pointer in c mode). (cmb, Anatol)
|
||||||
|
|
||||||
- XML:
|
- XML:
|
||||||
. Fixed bug 71592 (External entity processing never fails). (cmb)
|
. 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;
|
return PHP_STREAM_OPTION_RETURN_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER old_sz;
|
LARGE_INTEGER sz, old_sz;
|
||||||
if (!GetFileSizeEx(h, &old_sz)) {
|
sz.QuadPart = 0;
|
||||||
|
|
||||||
|
if (!SetFilePointerEx(h, sz, &old_sz, FILE_CURRENT)) {
|
||||||
return PHP_STREAM_OPTION_RETURN_ERR;
|
return PHP_STREAM_OPTION_RETURN_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER sz;
|
|
||||||
#if defined(_WIN64)
|
#if defined(_WIN64)
|
||||||
sz.HighPart = (new_size >> 32);
|
sz.HighPart = (new_size >> 32);
|
||||||
sz.LowPart = (new_size & 0xffffffff);
|
sz.LowPart = (new_size & 0xffffffff);
|
||||||
|
Loading…
Reference in New Issue
Block a user