I just discovered that the foreach() bug in line 334 of doeditboard.php is still there.
A possible fix is replacing:
foreach ($tree['tree'] as $k => $v) {
with:
foreach ($tree as $k => $v) {
after $tree['tree'] does not exist in cache/forum_list.php
Speaking of forum_list.php, there is a semicolon missing at the end of the array. To fix this, replace the following line in ubbthreads.inc.php:
lock_and_write("{$config['FULL_PATH']}/cache/forum_list.php","<?php\n\$tree = " . var_export($tree,true) . "?>");
with:
lock_and_write("{$config['FULL_PATH']}/cache/forum_list.php","<?php\n\$tree = " . var_export($tree,true) . ";\n?>");