Showstopper? copy() broken for urls and on windows

php.internals

Edin Kadribasic

21 years ago
Hi, Patch to fix #32160 (file truncation in copy() when source & destination are the same) http://viewcvs.php.net/viewcvs.cgi/php-src/ext/standard/file.c.diff?r1=1.398&r2=1.399 broke copy() on windows alltogether it seems. It also broke copy($url, $local_file) on other platforms since it tries to stat() urls. I suggest that we remove this fix and release 4.3.11 and 5.0.4 without it. I do not think that this change requires additional RC. Edin

Sara Golemon

21 years ago
> Patch to fix #32160 (file truncation in copy() when source & destination > are > the same) > > http://viewcvs.php.net/viewcvs.cgi/php-src/ext/standard/file.c.diff?r1=1.398&r2=1.399 > > broke copy() on windows alltogether it seems. It also broke copy($url, > $local_file) on other platforms since it tries to stat() urls. > > I suggest that we remove this fix and release 4.3.11 and 5.0.4 without it. > I > do not think that this change requires additional RC. >
Holy crap! I mean, um... yes, nix that. Or if the stat approach must be used, use php_stream_url_stat() instead and only `return ret;` IF both stats succeed AND their inodes are non-zero (wrappers which do not support inode values but do support some statting are expected to leave these values as 0) AND their inodes are identical. -Sara

Rasmus Lerdorf

21 years ago
Sara Golemon wrote:
>>Patch to fix #32160 (file truncation in copy() when source & destination >>are >>the same) >> >>http://viewcvs.php.net/viewcvs.cgi/php-src/ext/standard/file.c.diff?r1=1.398&r2=1.399 >> >>broke copy() on windows alltogether it seems. It also broke copy($url, >>$local_file) on other platforms since it tries to stat() urls. >> >>I suggest that we remove this fix and release 4.3.11 and 5.0.4 without it. >>I >>do not think that this change requires additional RC. >> > > Holy crap! > > I mean, um... yes, nix that. Or if the stat approach must be used, use > php_stream_url_stat() instead and only `return ret;` IF both stats succeed > AND their inodes are non-zero (wrappers which do not support inode values > but do support some statting are expected to leave these values as 0) AND > their inodes are identical.
This still needs a device check on UNIX as well. Inodes are only unique within a single filesystem. -Rasmus