This problem just seems very poorly defined from reading this thread. You're getting this error, okay, I get that. But under what circumstances? I mean, I can give you code that will produce that error every time, but unless you can get it with a completely default installation, it's probably not a WordPress bug
I never claimed it to be a wordpress bug. This was a question, only.
That which cannot be reproduced cannot be fixed. Furthermore, hpz's "fix" of eliminating the EXTR_SKIP shouldn't actually work. All removing that does is open potential security holes.
The problem is the reproduction. This error seems only to come up under some special conditions. And that is the point, to find out, what these special conditions are.
I reanalysed these conditions and I came to the conclusion, that this error has to be related to my PHP-Version.
So, I'm running PHP-4.3.2 on RedHat 3 (php-4.3.2-39).
Let me quickly explain, why:
At the line 31 in file gategory.php (function get_categories), the statement extract($r, EXTR_SKIP); should create an entry $orderby in the PHP-Symboltable, with the parameter to skip if there is already such an entry. And this is the problem, that there exists already a symbol $orderby with the value 'name', so the extract()-function doesn't override this one!!! I checked that by inserting the follwing statement just before line 31:
if (isset($orderby)) echo "</br>orderby before = $orderby</br>"; and guess what appeared on my page?
orderby before = name
But in the code there is absolutely no symbol '$orderby' referenced before the line 31. So, where the hell comes this symbol?
To give another proof is to insert the following statement before line 31:
unset($orderby);
extract($r, EXTR_SKIP);
This fixes also the error! So to be more precise, this should probably be regarded as a hack for working with certain php-versions, rather than a wordpress fix.
It remains to check what PHP-Version others, having the same problem, are running.