mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-06 11:24:27 +02:00
fixed serialization of values containing newlines (like _cache_attrs)
in core_write_cache_file() bumped version to 2.6.6-dev-3 to indicate that the fileformat of cache has changed
This commit is contained in:
@@ -464,7 +464,7 @@ class Smarty
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
var $_version = '2.6.6-dev-2';
|
var $_version = '2.6.6-dev-3';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* current template inclusion depth
|
* current template inclusion depth
|
||||||
|
@@ -48,10 +48,11 @@ function smarty_core_read_cache_file(&$params, &$smarty)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$cache_split = explode("\n", $params['results'], 2);
|
$_contents = $params['results'];
|
||||||
$cache_header = $cache_split[0];
|
$_info_start = strpos($_contents, "\n") + 1;
|
||||||
|
$_info_len = (int)substr($_contents, 0, $_info_start - 1);
|
||||||
$_cache_info = unserialize($cache_header);
|
$_cache_info = unserialize(substr($_contents, $_info_start, $_info_len));
|
||||||
|
$params['results'] = substr($_contents, $_info_start + $_info_len);
|
||||||
|
|
||||||
if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
|
if ($smarty->caching == 2 && isset ($_cache_info['expires'])){
|
||||||
// caching by expiration time
|
// caching by expiration time
|
||||||
@@ -99,7 +100,6 @@ function smarty_core_read_cache_file(&$params, &$smarty)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$params['results'] = $cache_split[1];
|
|
||||||
$content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
|
$content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info);
|
||||||
|
|
||||||
$smarty->_cache_info = $_cache_info;
|
$smarty->_cache_info = $_cache_info;
|
||||||
|
@@ -62,7 +62,8 @@ function smarty_core_write_cache_file($params, &$smarty)
|
|||||||
$smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
|
$smarty->_cache_info['cache_serials'] = $smarty->_cache_serials;
|
||||||
|
|
||||||
// prepend the cache header info into cache file
|
// prepend the cache header info into cache file
|
||||||
$params['results'] = serialize($smarty->_cache_info)."\n".$params['results'];
|
$_cache_info = serialize($smarty->_cache_info);
|
||||||
|
$params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results'];
|
||||||
|
|
||||||
if (!empty($smarty->cache_handler_func)) {
|
if (!empty($smarty->cache_handler_func)) {
|
||||||
// use cache_handler function
|
// use cache_handler function
|
||||||
|
Reference in New Issue
Block a user