]>
Commit | Line | Data |
---|---|---|
fb98beff ER |
1 | --- PHP_5_3/ext/spl/spl_array.c 2010/12/10 22:51:08 306212 |
2 | +++ PHP_5_3/ext/spl/spl_array.c 2010/12/10 23:58:33 306213 | |
3 | @@ -579,8 +579,15 @@ | |
4 | switch(Z_TYPE_P(offset)) { | |
5 | case IS_STRING: | |
6 | if (check_empty) { | |
7 | - if (zend_symtable_find(spl_array_get_hash_table(intern, 0 TSRMLS_CC), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &tmp) != FAILURE && zend_is_true(*tmp)) { | |
8 | - return 1; | |
9 | + if (zend_symtable_find(spl_array_get_hash_table(intern, 0 TSRMLS_CC), Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &tmp) != FAILURE) { | |
10 | + switch (check_empty) { | |
11 | + case 0: | |
12 | + return Z_TYPE_PP(tmp) != IS_NULL; | |
13 | + case 2: | |
14 | + return 1; | |
15 | + default: | |
16 | + return zend_is_true(*tmp); | |
17 | + } | |
18 | } | |
19 | return 0; | |
20 | } else { | |
21 | @@ -597,8 +604,15 @@ | |
22 | } | |
23 | if (check_empty) { | |
24 | HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC); | |
25 | - if (zend_hash_index_find(ht, index, (void **)&tmp) != FAILURE && zend_is_true(*tmp)) { | |
26 | - return 1; | |
27 | + if (zend_hash_index_find(ht, index, (void **)&tmp) != FAILURE) { | |
28 | + switch (check_empty) { | |
29 | + case 0: | |
30 | + return Z_TYPE_PP(tmp) != IS_NULL; | |
31 | + case 2: | |
32 | + return 1; | |
33 | + default: | |
34 | + return zend_is_true(*tmp); | |
35 | + } | |
36 | } | |
37 | return 0; | |
38 | } else { |