diff options
Diffstat (limited to 'includes/module.inc')
-rw-r--r-- | includes/module.inc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/includes/module.inc b/includes/module.inc index dfa31a91d..748333a35 100644 --- a/includes/module.inc +++ b/includes/module.inc @@ -142,7 +142,13 @@ function module_implements($hook) { } } - return $implementations[$hook]; + // The explicit cast forces a copy to be made. This is needed because + // $implementations[$hook] is only a reference to an element of + // $implementations and if there are nested foreaches (due to nested node + // API calls, for example), they would both manipulate the same array's + // references, which causes some modules' hooks not to be called. + // See also http://www.zend.com/zend/art/ref-count.php. + return (array)$implementations[$hook]; } /** |