diff --git a/pear/Log.php b/pear/Log.php index f4c029c002b..1df0928f535 100644 --- a/pear/Log.php +++ b/pear/Log.php @@ -51,11 +51,13 @@ class Log { * @return The newly created concrete Log instance, or an * false on an error. */ - function factory ($log_type, $log_name = '', $ident = '', $conf = array()) { + function &factory($log_type, $log_name = '', $ident = '', $conf = array()) + { $log_type = strtolower($log_type); $classfile = 'Log/' . $log_type . '.php'; - if (@include_once $classfile) { - $class = 'Log_' . $log_type; + @include_once $classfile; + $class = 'Log_' . $log_type; + if (class_exists($class)) { return new $class($log_name, $ident, $conf); } else { return false; @@ -101,7 +103,7 @@ class Log { $signature = md5($log_type . '][' . $log_name . '][' . $ident . '][' . implode('][', $conf)); if (!isset($instances[$signature])) { - $instances[$signature] = Log::factory($log_type, $log_name, $ident, $conf); + $instances[$signature] = &Log::factory($log_type, $log_name, $ident, $conf); } return $instances[$signature]; }