call_user_func_array のバグと回避策

call_user_func_arrayの話ですが、
参照渡しのある関数を呼び出すと、うまく値が変わってくれないというバグがあったりします。

[php] <?php function aaa(& $str) { $str = 'hello'; }

$tmp = array('abc'); call_user_func_array('aaa',$tmp);

echo $tmp[0]; // 'abc' と表示される; [/php]
ただ、こうするとちゃんと動作するようです。
[php] <?php

function aaa(& $str) { $str = 'hello'; }

$tmp = array('abc'); $wk = array(); for ($i=0;$i<sizeof($tmp);$i++) { $wk[] = & $tmp[$i]; } call_user_func_array('aaa',$tmp);

echo $tmp[0]; // 'hello' と表示される;[/php]
バッドノウハウくさいんですがね。
バージョン依存とかはないのかしら。