From c4fc7f401f80c26a3d96106a67ae7247edf8996f Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 14 Dec 2005 18:46:21 +0000 Subject: - Patch #40886 by chx: fixed problem with recursive/nested node API calls manipulating the same array references. --- includes/module.inc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'includes') 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]; } /** -- cgit v1.2.3