Check return value of dir() in Skin.php
authorumherirrender <umherirrender_de.wp@web.de>
Wed, 27 Mar 2013 07:14:01 +0000 (08:14 +0100)
committerumherirrender <umherirrender_de.wp@web.de>
Wed, 27 Mar 2013 07:14:01 +0000 (08:14 +0100)
This avoids a fatal, when something is wrong with $wgStyleDirectory or
the directory referred there.

PHP Fatal error: Call to a member function read() on a non-object in
Skin.php

bug: 42167
Change-Id: I3d63cb984bc2aa0f85ade04607862c639ba51fdb

includes/Skin.php

index a34afb6..e5aedd9 100644 (file)
@@ -56,17 +56,19 @@ abstract class Skin extends ContextSource {
 
                        $skinDir = dir( $wgStyleDirectory );
 
-                       # while code from www.php.net
-                       while ( false !== ( $file = $skinDir->read() ) ) {
-                               // Skip non-PHP files, hidden files, and '.dep' includes
-                               $matches = array();
-
-                               if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
-                                       $aSkin = $matches[1];
-                                       $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
+                       if ( $skinDir !== false && $skinDir !== null ) {
+                               # while code from www.php.net
+                               while ( false !== ( $file = $skinDir->read() ) ) {
+                                       // Skip non-PHP files, hidden files, and '.dep' includes
+                                       $matches = array();
+
+                                       if ( preg_match( '/^([^.]*)\.php$/', $file, $matches ) ) {
+                                               $aSkin = $matches[1];
+                                               $wgValidSkinNames[strtolower( $aSkin )] = $aSkin;
+                                       }
                                }
+                               $skinDir->close();
                        }
-                       $skinDir->close();
                        $skinsInitialised = true;
                        wfProfileOut( __METHOD__ . '-init' );
                }