mirror of
https://github.com/smarty-php/smarty.git
synced 2026-04-29 02:03:31 +02:00
- optimization replace internal Smarty::$ds property by DIRECTORY_SEPARATOR (reverted from commit f7a5316205) (reverted from commit beaa293eb3) (reverted from commit 86f36196e2)
This commit is contained in:
@@ -35,30 +35,34 @@ class Smarty_Internal_Runtime_WriteFile
|
||||
if ($_file_perms !== null) {
|
||||
$old_umask = umask(0);
|
||||
}
|
||||
|
||||
$_dirpath = dirname($_filepath);
|
||||
// if subdirs, create dir structure
|
||||
|
||||
// if subdirs, create dir structure
|
||||
if ($_dirpath !== '.') {
|
||||
$i = 0;
|
||||
$i=0;
|
||||
// loop if concurrency problem occurs
|
||||
// see https://bugs.php.net/bug.php?id=35326
|
||||
while (!is_dir($_dirpath)) {
|
||||
if (@mkdir($_dirpath, $_dir_perms, true)) {
|
||||
break;
|
||||
}
|
||||
clearstatcache();
|
||||
if (++$i === 3) {
|
||||
error_reporting($_error_reporting);
|
||||
throw new SmartyException("unable to create directory {$_dirpath}");
|
||||
}
|
||||
sleep(1);
|
||||
if (@mkdir($_dirpath, $_dir_perms, true)) {
|
||||
break;
|
||||
}
|
||||
clearstatcache();
|
||||
if (++$i === 3) {
|
||||
error_reporting($_error_reporting);
|
||||
throw new SmartyException("unable to create directory {$_dirpath}");
|
||||
}
|
||||
sleep(1);
|
||||
}
|
||||
}
|
||||
|
||||
// write to tmp file, then move to overt file lock race condition
|
||||
$_tmp_file = $_dirpath . DIRECTORY_SEPARATOR . str_replace(array('.', ','), '_', uniqid('wrt', true));
|
||||
$_tmp_file = $_dirpath . $smarty->ds . str_replace(array('.', ','), '_', uniqid('wrt', true));
|
||||
if (!file_put_contents($_tmp_file, $_contents)) {
|
||||
error_reporting($_error_reporting);
|
||||
throw new SmartyException("unable to write file {$_tmp_file}");
|
||||
}
|
||||
|
||||
/*
|
||||
* Windows' rename() fails if the destination exists,
|
||||
* Linux' rename() properly handles the overwrite.
|
||||
@@ -95,6 +99,7 @@ class Smarty_Internal_Runtime_WriteFile
|
||||
umask($old_umask);
|
||||
}
|
||||
error_reporting($_error_reporting);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user