From 43ad4ad1407ab46876e7785da6f0952b07071b99 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Sun, 10 May 2009 16:46:24 +0000 Subject: - Patch #458566 by chx: work around PHP's curly bracket madness. --- includes/registry.inc | 4 +++- modules/simpletest/tests/registry.test | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/includes/registry.inc b/includes/registry.inc index ff6bdc950..569945746 100644 --- a/includes/registry.inc +++ b/includes/registry.inc @@ -254,7 +254,9 @@ function _registry_skip_body(&$tokens) { // Scan through the rest of the tokens until we reach the matching // end brace. while ($num_braces && ($token = next($tokens))) { - if ($token == '{') { + // PHP is really logical to have three different tokens for { with + // inconsistent names and only one for a closing brace. + if ($token == '{' || (is_array($token) && ($token[0] == T_DOLLAR_OPEN_CURLY_BRACES || $token[0] == T_CURLY_OPEN))) { ++$num_braces; } elseif ($token == '}') { diff --git a/modules/simpletest/tests/registry.test b/modules/simpletest/tests/registry.test index 4a859a64f..97ac23da8 100644 --- a/modules/simpletest/tests/registry.test +++ b/modules/simpletest/tests/registry.test @@ -135,3 +135,23 @@ CONTENTS; } +class RegistrySkipBodyTestCase extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => t('Skip function body test'), + 'description' => t('Tokenize a simple function and check that the body is skipped right'), + 'group' => t('System'), + ); + } + + function testRegistrySkipBody () { + // This string contains all three kinds of opening braces. + $function = 'assertIdentical(each($tokens), FALSE, t('Tokens skipped')); + } + +} \ No newline at end of file -- cgit v1.2.3