diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-10-23 19:19:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-23 19:19:51 +0200 |
commit | c3919b844be8fdfcbc83d140caa7c338eda20caf (patch) | |
tree | ba99b56a96c326fa8570909e1aa65d534114de8e /apps/dav | |
parent | 56812b0ae5c0cb30cd465cdcfa826f5e6c913f33 (diff) | |
parent | 13317da19a1b8b5d879ca3881fe1fdab2a56548b (diff) | |
download | nextcloud-server-c3919b844be8fdfcbc83d140caa7c338eda20caf.tar.gz nextcloud-server-c3919b844be8fdfcbc83d140caa7c338eda20caf.zip |
Merge pull request #11997 from nextcloud/assemblly-stream-lazy-13
lazy open first source stream in assemblystream
Diffstat (limited to 'apps/dav')
-rw-r--r-- | apps/dav/lib/Upload/AssemblyStream.php | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/apps/dav/lib/Upload/AssemblyStream.php b/apps/dav/lib/Upload/AssemblyStream.php index 3ba24bf60fd..1a73669698b 100644 --- a/apps/dav/lib/Upload/AssemblyStream.php +++ b/apps/dav/lib/Upload/AssemblyStream.php @@ -73,9 +73,6 @@ class AssemblyStream implements \Icewind\Streams\File { return strnatcmp($a->getName(), $b->getName()); }); $this->nodes = array_values($nodes); - if (count($this->nodes) > 0) { - $this->currentStream = $this->getStream($this->nodes[0]); - } $this->size = array_reduce($this->nodes, function ($size, IFile $file) { return $size + $file->getSize(); }, 0); @@ -104,7 +101,11 @@ class AssemblyStream implements \Icewind\Streams\File { */ public function stream_read($count) { if (is_null($this->currentStream)) { - return ''; + if ($this->currentNode < count($this->nodes)) { + $this->currentStream = $this->getStream($this->nodes[$this->currentNode]); + } else { + return ''; + } } do { @@ -182,7 +183,7 @@ class AssemblyStream implements \Icewind\Streams\File { * @return bool */ public function stream_eof() { - return $this->pos >= $this->size || $this->currentStream === null; + return $this->pos >= $this->size || ($this->currentNode >= count($this->nodes) && $this->currentNode === null); } /** |