From: Scott MacVicar Date: Tue, 9 Jun 2009 01:58:07 +0000 (+0000) Subject: MFH Fix bug #48493 - spl_autoload_register can leave the HT in an inconsistent way. X-Git-Tag: php-5.3.0RC3~14 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fc8426ad315b42d117505dfbc95268579e11df2e;p=php MFH Fix bug #48493 - spl_autoload_register can leave the HT in an inconsistent way. Need to point the second elements previous item to head so we can traverse upwards. --- diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index dda04cbd01..2e34f46e64 100755 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -415,6 +415,7 @@ PHP_FUNCTION(spl_autoload_call) (ht)->pListTail->pListNext = (ht)->pListHead; \ (ht)->pListHead = (ht)->pListTail; \ (ht)->pListTail = (ht)->pListHead->pListLast; \ + (ht)->pListHead->pListNext->pListLast = (ht)->pListHead;\ (ht)->pListTail->pListNext = NULL; \ (ht)->pListHead->pListLast = NULL; diff --git a/ext/spl/tests/bug48493.phpt b/ext/spl/tests/bug48493.phpt new file mode 100644 index 0000000000..d0be7f8ec7 --- /dev/null +++ b/ext/spl/tests/bug48493.phpt @@ -0,0 +1,26 @@ +--TEST-- +SPL: Bug #48493 spl_autoload_unregister() can't handle prepended functions +--FILE-- + +--EXPECT-- +array(2) { + [0]=> + string(9) "autoload1" + [1]=> + string(9) "autoload2" +} +array(1) { + [0]=> + string(9) "autoload1" +}