Doc #54902 [Com]: fseek inconsistencies with large (>2GB) files

From: Date: Thu, 22 Dec 2022 06:06:09 +0000
Subject: Doc #54902 [Com]: fseek inconsistencies with large (>2GB) files
References: 1  Groups: php.doc.bugs 
Request: Send a blank email to doc-bugs+get-19520@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=54902&edit=1

 ID:                 54902
 Comment by:         farid dot jamili4118 at gmail dot com
 Reported by:        zingaburga at hotmail dot com
 Summary:            fseek inconsistencies with large (>2GB) files
 Status:             Open
 Type:               Documentation Problem
 Package:            Filesystem function related
 Operating System:   Windows 7
 PHP Version:        5.3.6
 Block user comment: N
 Private report:     N

 New Comment:

That would make the pastebin example to behave
reasonably.  However, that also would prohibit to read beyond the
2GB limit, so would likely break working code, and remove a
basically working feature.

(https://www.dunkinrunsonyou.online/)php.net


Previous Comments:
------------------------------------------------------------------------
[2020-10-06 13:38:31] cmb@php.net

I think we should leave that as is, but document the behavior.

------------------------------------------------------------------------
[2020-09-01 12:27:22] cmb@php.net

Related To: Bug #74395

------------------------------------------------------------------------
[2020-08-31 08:32:02] cmb@php.net

The following pull request has been associated:

Patch Name: Fix #54902: fseek inconsistencies with large (>2GB) files
On GitHub:  https://github.com/php/php-src/pull/6055
Patch:      https://github.com/php/php-src/pull/6055.patch

------------------------------------------------------------------------
[2020-08-14 14:20:06] cmb@php.net

The following patch has been added/updated:

Patch Name: position-no-overflow
Revision:   1597414806
URL:        https://bugs.php.net/patch-display.php?bug=54902&patch=position-no-overflow&revision=1597414806

------------------------------------------------------------------------
[2020-08-14 14:19:40] cmb@php.net

Ugh, that is indeed ugly.  One way to fix this inconsistency would
be to avoid the stream.position to overflow (see the attached
position-no-overflow patch, which doesn't cater to writing,
though).  That would make the pastebin example to behave
reasonably.  However, that also would prohibit to read beyond the
2GB limit, so would likely break working code, and remove a
basically working feature.

Other than that, we could make the stream.position unsigned.  That
still would cause issues, because the stream layer converts
SEEK_CUR seeks to SEEK_SET[1] to cater to stream.position which is
not necessarily what ftell() would report (if the stream even
supports something like ftell()).  However, fseek() (or rather
lseek() which is used internally) expect signed offsets, so we
still couldn't seek beyond the 2GB limit – unless we'd rely on
large file support.  Not sure if that would be worth the trouble
nowadays.

[1] <https://github.com/php/php-src/blob/php-7.3.21/main/streams/streams.c#L1286-L1291>

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


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=54902


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


Thread (6 messages)

« previous php.doc.bugs (#19520) next »