Hello, the upstream bug report for this problem is in fact http://bugs.php.net/bug.php?id=27421. #39400 was closed without the PHP developer understanding what it was really about. (He only fixed the error reporting of the mb_* functions.)
The attached patch, which I also submitted to the upstream report fixes the problem. Regards, David
--- mbstring.c 2008-03-19 15:24:06.000000000 +0100
+++ mbstring.c.new 2008-03-19 19:00:14.000000000 +0100
@@ -1023,9 +1023,14 @@
/* clear overloaded function. */
if (MBSTRG(func_overload)){
p = &(mb_ovld[0]);
- while (p->type > 0 && zend_hash_find(EG(function_table), p->save_func, strlen(p->save_func)+1 , (void **)&orig) == SUCCESS) {
- zend_hash_update(EG(function_table), p->orig_func, strlen(p->orig_func)+1, orig, sizeof(zend_function), NULL);
- zend_hash_del(EG(function_table), p->save_func, strlen(p->save_func)+1);
+ while (p->type > 0) {
+ if ((MBSTRG(func_overload) & p->type) == p->type &&
+ zend_hash_find(EG(function_table), p->save_func,
+ strlen(p->save_func)+1, (void **)&orig) == SUCCESS) {
+
+ zend_hash_update(EG(function_table), p->orig_func, strlen(p->orig_func)+1, orig, sizeof(zend_function), NULL);
+ zend_hash_del(EG(function_table), p->save_func, strlen(p->save_func)+1);
+ }
p++;
}
}
signature.asc
Description: This is a digitally signed message part.

