Fix call to disk_free_space when a file is provided

In the case of shared files, we have to call free_space() on the file
name. This has the side-effect that when uploading to a local storage
without quota set, it will call disk_free_space with the file name,
which fails.

This fix uses the parent folder in case the given path is a file.
This commit is contained in:
Vincent Petry 2016-03-07 10:58:24 +01:00
parent bd144efeb1
commit 11f76b2918
1 changed files with 9 additions and 1 deletions

View File

@ -252,7 +252,15 @@ class Local extends \OC\Files\Storage\Common {
}
public function free_space($path) {
$space = @disk_free_space($this->getSourcePath($path));
$sourcePath = $this->getSourcePath($path);
// using !is_dir because $sourcePath might be a part file or
// non-existing file, so we'd still want to use the parent dir
// in such cases
if (!is_dir($sourcePath)) {
// disk_free_space doesn't work on files
$sourcePath = dirname($sourcePath);
}
$space = @disk_free_space($sourcePath);
if ($space === false || is_null($space)) {
return \OCP\Files\FileInfo::SPACE_UNKNOWN;
}