mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
MFH: Fix #46813 (class_exists doesn`t work with fully qualified namespace)
This commit is contained in:
parent
a8578a5ab1
commit
d828b8acc0
24
Zend/tests/bug46813.phpt
Normal file
24
Zend/tests/bug46813.phpt
Normal file
@ -0,0 +1,24 @@
|
||||
--TEST--
|
||||
Bug #46813: class_exists doesn`t work with fully qualified namespace
|
||||
--FILE--
|
||||
<?php
|
||||
namespace test;
|
||||
{
|
||||
class inner
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$inner = new \test\inner();
|
||||
|
||||
echo "autoload == true:\n";
|
||||
var_dump(class_exists('\test\inner', true));
|
||||
echo "autoload == false:\n";
|
||||
var_dump(class_exists('\test\inner', true));
|
||||
?>
|
||||
--EXPECT--
|
||||
autoload == true:
|
||||
bool(true)
|
||||
autoload == false:
|
||||
bool(true)
|
@ -1157,10 +1157,21 @@ ZEND_FUNCTION(class_exists)
|
||||
}
|
||||
|
||||
if (!autoload) {
|
||||
char *name;
|
||||
int len;
|
||||
|
||||
lc_name = do_alloca(class_name_len + 1, use_heap);
|
||||
zend_str_tolower_copy(lc_name, class_name, class_name_len);
|
||||
|
||||
/* Ignore leading "\" */
|
||||
name = lc_name;
|
||||
len = class_name_len;
|
||||
if (lc_name[0] == '\\') {
|
||||
name = &lc_name[1];
|
||||
len--;
|
||||
}
|
||||
|
||||
found = zend_hash_find(EG(class_table), lc_name, class_name_len+1, (void **) &ce);
|
||||
found = zend_hash_find(EG(class_table), name, len+1, (void **) &ce);
|
||||
free_alloca(lc_name, use_heap);
|
||||
RETURN_BOOL(found == SUCCESS && !((*ce)->ce_flags & ZEND_ACC_INTERFACE));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user