0
0
mirror of https://github.com/ezyang/htmlpurifier.git synced 2024-12-22 16:31:53 +00:00

Fix E_WARNING when cache directory exists

Sometimes Serializer from another thread already creaded dir - this commit resolves this issue.
This commit is contained in:
pawelkania 2017-06-20 09:53:14 +02:00 committed by GitHub
parent d21213e0d3
commit e11f7c9802

View File

@ -217,9 +217,14 @@ class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCac
$directory = $this->generateDirectoryPath($config); $directory = $this->generateDirectoryPath($config);
$chmod = $config->get('Cache.SerializerPermissions'); $chmod = $config->get('Cache.SerializerPermissions');
if ($chmod === null) { if ($chmod === null) {
// TODO: This races if (!@mkdir($directory) && !is_dir($directory)) {
if (is_dir($directory)) return true; trigger_error(
return mkdir($directory); 'Could not create directory ' . $directory . '',
E_USER_WARNING
);
return false;
}
return true;
} }
if (!is_dir($directory)) { if (!is_dir($directory)) {
$base = $this->generateBaseDirectoryPath($config); $base = $this->generateBaseDirectoryPath($config);
@ -233,7 +238,7 @@ class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCac
} elseif (!$this->_testPermissions($base, $chmod)) { } elseif (!$this->_testPermissions($base, $chmod)) {
return false; return false;
} }
if (!mkdir($directory, $chmod)) { if (!@mkdir($directory, $chmod) && !is_dir($directory)) {
trigger_error( trigger_error(
'Could not create directory ' . $directory . '', 'Could not create directory ' . $directory . '',
E_USER_WARNING E_USER_WARNING