Skip to content

Commit 1b96769

Browse files
BUGFIX: Support empty data in SimpleFileBackend
In newer versions of PHP, calling `fread` with non-positive length raises an error: fread(): Argument #2 ($length) must be greater than 0 Since SimpleFileBackend supports saving an empty file, it should also support reading one.
1 parent aeff374 commit 1b96769

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

Neos.Cache/Classes/Backend/SimpleFileBackend.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,16 @@ protected function readCacheFile(string $cacheEntryPathAndFilename, int $offset
503503
if ($offset !== null) {
504504
fseek($file, $offset);
505505
}
506-
$data = fread($file, $maxlen !== null ? $maxlen : filesize($cacheEntryPathAndFilename) - (int)$offset);
506+
507+
$length = $maxlen !== null ? $maxlen : filesize($cacheEntryPathAndFilename) - (int)$offset;
508+
509+
// fread requires a positive length. If the file is empty, we just return an empty string.
510+
if ($length === 0) {
511+
$data = '';
512+
} else {
513+
$data = fread($file, $length);
514+
}
515+
507516
flock($file, LOCK_UN);
508517
}
509518
fclose($file);

Neos.Cache/Tests/Unit/Backend/SimpleFileBackendTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,22 @@ public function getReturnsContentOfTheCorrectCacheFile()
222222
self::assertSame($data2, $simpleFileBackend->get($entryIdentifier));
223223
}
224224

225+
/**
226+
* @test
227+
*/
228+
public function getSupportsEmptyData()
229+
{
230+
$this->mockCacheFrontend->expects(self::any())->method('getIdentifier')->will(self::returnValue('UnitTestCache'));
231+
232+
$data = '';
233+
$entryIdentifier = 'SimpleFileBackendTest';
234+
235+
$simpleFileBackend = $this->getSimpleFileBackend();
236+
$simpleFileBackend->set($entryIdentifier, $data);
237+
238+
self::assertSame($data, $simpleFileBackend->get($entryIdentifier));
239+
}
240+
225241
/**
226242
* @test
227243
*/

0 commit comments

Comments
 (0)