Somente variáveis podem ser passadas por referência

Tive a brilhante idéia de usar um manipulador de erros personalizado que me levou a uma toca de coelho.

O código a seguir fornece (com e sem o manipulador de erros personalizado):Erro fatal: somente variáveis podem ser passadas por referência

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

O código a seguir fornece (somente com um manipulador de erros personalizado):(2048) Apenas variáveis devem ser passadas por referência

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

O segundo me preocupa, pois tenho muito código 'compacto'. Portanto, ou evito a brilhante idéia de usar um manipulador de erros personalizado (para melhorar meu módulo de registro) ou expanda todo o meu código.

Alguém com melhores ideias? Além disso, WTF?

ATUALIZAR:

Graças às respostas, aprendi algo sobre como o php manipula erros. A confusão de E_ALL não incluindo E_STRICT (php 5) não é legal.

Além disso, a criação de seu próprio manipulador de erros personalizado habilita o E_STRICT por padrão e é aí que os problemas começam.

A moral da história é usar seu próprio manipulador de erros para capturá-los TODOS e usar as constantes de erro (E_STRICT, E_USER_WARNING, E_USER_ERROR etc.) para fazer sua filtragem.

Quanto ao 'problema de corrupção de memória' com referências variáveis e determinadas funções, o que posso dizer? Duplamente não legal. Vou (o que não significa que você deva) ignorar E_STRICT no meu manipulador de erros e a vida continua.

questionAnswers(7)

yourAnswerToTheQuestion