diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index 8509b875ef..ea4846f8ea 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -110,6 +110,7 @@
[Fix] Deleted users still appear logged in (Bug #41985 - Patch by TerraFrost)
[Fix] Removed redundant code and unnecessary queries in forum management. (Bug #42265 - Patch by nickvergessen)
[Fix] Correct mbstring regular expression for the allowable username characters, only affects USERNAME_LETTER_NUM_SPACERS
. (Bug #42325)
+ [Fix] Fix infinite loop in message handler if cache directory is not writable. (Bug #38675)
[Change] Allow download of conflicting file for later reference in automatic updater
[Change] Default difference view is now 'inline' instead of 'side by side'
[Change] Added new option for merging differences to conflicting files in automatic updater
diff --git a/phpBB/includes/acm/acm_file.php b/phpBB/includes/acm/acm_file.php
index d0cb9bd4a7..22c7ba8bda 100644
--- a/phpBB/includes/acm/acm_file.php
+++ b/phpBB/includes/acm/acm_file.php
@@ -106,10 +106,13 @@ class acm
// Now, this occurred how often? ... phew, just tell the user then...
if (!@is_writable($this->cache_dir))
{
- trigger_error($this->cache_dir . ' is NOT writable.', E_USER_ERROR);
+ // We need to use die() here, because else we may encounter an infinite loop (the message handler calls $cache->unload())
+ die($this->cache_dir . ' is NOT writable.');
+ exit;
}
- trigger_error('Not able to open ' . $this->cache_dir . 'data_global.' . $phpEx, E_USER_ERROR);
+ die('Not able to open ' . $this->cache_dir . 'data_global.' . $phpEx);
+ exit;
}
$this->is_modified = false;