Solo se pueden pasar variables por referencia

Tuve la brillante idea de usar un controlador de errores personalizado que me llevó por un hoyo de conejo.

El siguiente código proporciona (con y sin controlador de errores personalizado):Error fatal: solo las variables se pueden pasar por referencia

function foo(){
    $b=array_pop(array("a","b","c"));
    return $b;
}
print_r(foo());

El siguiente código da (solo con un controlador de errores personalizado):(2048) Solo las variables deben pasarse por referencia

function foo(){
    $a=explode( '/' , 'a/b/c');
    $c=array_pop(array_slice($a,-2,1));
    return $c;
}
print_r(foo());

El segundo me preocupa ya que tengo mucho código 'compacto'. Entonces, evito la brillante idea de usar un controlador de errores personalizado (para mejorar mi módulo de registro) o expandir todo mi código.

¿Alguien con mejores ideas? Además, WTF?

ACTUALIZAR:

Gracias a las respuestas, he aprendido algo sobre cómo PHP maneja los errores. La confusión de E_ALL sin incluir E_STRICT (php 5) no es genial.

Además de todo esto, la creación de su propio controlador de errores personalizado habilita E_STRICT de forma predeterminada y ahí es donde comienzan los problemas.

La moraleja de la historia es usar su propio controlador de errores para atraparlos TODOS y usar las constantes de error (E_STRICT, E_USER_WARNING, E_USER_ERROR, etc.) para hacer su filtrado.

En cuanto al 'problema de corrupción de memoria' con referencias variables y ciertas funciones, ¿qué puedo decir? Doblemente frío. Yo (lo que no significa que debas) ignoraré E_STRICT en mi controlador de errores y la vida continuará.

Respuestas a la pregunta(7)

Su respuesta a la pregunta