Bug #52335 [Asn->Opn]: fseek() on memory stream behavior different then file

From: Date: Tue, 24 Oct 2017 07:52:43 +0000
Subject: Bug #52335 [Asn->Opn]: fseek() on memory stream behavior different then file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-212173@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=52335&edit=1

 ID:                 52335
 Updated by:         kalle@php.net
 Reported by:        jbondc at openmv dot com
 Summary:            fseek() on memory stream behavior different then
                     file
-Status:             Assigned
+Status:             Open
 Type:               Bug
 Package:            Streams related
 Operating System:   FreeBSD 7.2
 PHP Version:        5.2.14RC2
-Assigned To:        cataphract
+Assigned To:        
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2010-11-22 14:55:08] jbondc at openmv dot com

Thanks, saw the changes in fseek.xml

What about adding streamWrapper::hasFeature(/* int */$featureId)

const STREAM_FEAT_FWDSEEK = 1;
const STREAM_FEAT_OTHER   = 2; 
//...

$stream = new File_Stream('/tmp/foo');
$stream->isSupported(STREAM_FEAT_FWDSEEK); // true
fseek($stream, 1024); // NULL bytes added

$stream = new Memory_Stream('/tmp/foo');
$stream->isSupported(STREAM_FEAT_FWDSEEK); // false
fseek($stream, 1024); // false

The goal is to have a consistent api to write to a binary stream.

I can give it some more thought, other stream 'features'.

------------------------------------------------------------------------
[2010-11-13 16:10:48] cataphract@php.net

I've fixed the doc part, but on a closer inspection the behavior of the memory stream on
past-the-end-of-file seeks could be improved.

------------------------------------------------------------------------
[2010-11-13 16:09:54] cataphract@php.net

Automatic comment from SVN on behalf of cataphract
Revision: http://svn.php.net/viewvc/?view=revision&revision=305317
Log: - Behavior when seeking past the end of file.
  Partially addresses bug #52335.
- Expanded note on how the stream may not support seeking.

------------------------------------------------------------------------
[2010-07-14 13:18:10] jbondc at openmv dot com

Description:
------------
May not be a bug but a documentation issue

With a file, fseek() to an offset that doesn't exist results in NULL bytes added.
Using a memory stream, fseek() just fails.

Which one is the expected behavior? Also for streamWrapper::stream_seek()








Test script:
---------------
$sp = fopen("php://memory", 'w+');
fseek($sp, 1024);               // fails why?
echo fwrite($sp, "abc");        // 3
fseek($sp, 1024);               //
echo fread($sp, 3);             // NULL.. 

$sp = fopen("/tmp/foo", 'w+');
fseek($sp, 1024);
echo fwrite($sp, "abc");  	// 3
fseek($sp, 1024);
echo fread($sp, 3);	        // abc

Expected result:
----------------
3abc3abc

Actual result:
--------------
33abc


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=52335&edit=1


Thread (6 messages)

« previous php.bugs (#212173) next »