summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/private/filechunking.php4
-rw-r--r--lib/private/files/storage/local.php7
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/private/filechunking.php b/lib/private/filechunking.php
index 604a607336c..f2cef275458 100644
--- a/lib/private/filechunking.php
+++ b/lib/private/filechunking.php
@@ -90,7 +90,7 @@ class OC_FileChunking {
* Assembles the chunks into the file specified by the path.
* Chunks are deleted afterwards.
*
- * @param string $f target path
+ * @param resource $f target path
*
* @return integer assembled file size
*
@@ -106,6 +106,8 @@ class OC_FileChunking {
// remove after reading to directly save space
$cache->remove($prefix.$i);
$count += fwrite($f, $chunk);
+ // let php release the memory to work around memory exhausted error with php 5.6
+ $chunk = null;
}
return $count;
diff --git a/lib/private/files/storage/local.php b/lib/private/files/storage/local.php
index f6f5a8cc130..b6d0ec3fb34 100644
--- a/lib/private/files/storage/local.php
+++ b/lib/private/files/storage/local.php
@@ -176,7 +176,12 @@ class Local extends \OC\Files\Storage\Common {
}
public function file_get_contents($path) {
- return file_get_contents($this->getSourcePath($path));
+ // file_get_contents() has a memory leak: https://bugs.php.net/bug.php?id=61961
+ $filename = $this->getSourcePath($path);
+ $handle = fopen($filename,'rb');
+ $content = fread($handle, filesize($filename));
+ fclose($handle);
+ return $content;
}
public function file_put_contents($path, $data) {