- Improved SPL (Marcus)
. Added SplFileInfo::getBasename(), DirectoryIterator::getBasename().
. Added SplFileInfo::getLinkTarget(), SplFileInfo::getRealPath().
+ . Made RecursiveFilterIterator::accept() abstract as stated in documentation.
- Improved SOAP
. Added ability to encode arrays with "SOAP-ENC:Array" type instead of WSDL
type. To activate the ability use "feature"=>SOAP_USE_XSI_ARRAY_TYPE
- Fixed zend_llist_remove_tail (Michael Wallner, Dmitry)
- Fixed a thread safety issue in gd gif read code (Nuno, Roman Nemecek)
- Fixed CVE-2007-1001, GD wbmp used with invalid image size (Pierre)
+- Fixed bug #40872 (inconsistency in offsetSet, offsetExists treatment of
+ string enclosed integers). (Marcus)
- Fixed bug #40854 (imap_mail_compose() creates an invalid terminator for
multipart e-mails). (Ilia)
- Fixed bug #40848 (sorting issue on 64-bit Solaris). (Wez)
{
spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC);
long index;
- zval *rv;
+ zval *rv, **tmp;
if (check_inherited && intern->fptr_offset_has) {
SEPARATE_ARG_IF_REF(offset);
switch(Z_TYPE_P(offset)) {
case IS_STRING:
if (check_empty) {
- zval **tmp;
- HashTable *ht = spl_array_get_hash_table(intern, 0 TSRMLS_CC);
- if (zend_hash_find(ht, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **) &tmp) != FAILURE && zend_is_true(*tmp)) {
+ 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)) {
return 1;
}
return 0;
--- /dev/null
+--TEST--
+Bug #40872 (inconsistency in offsetSet, offsetExists treatment of string enclosed integers)
+--FILE--
+<?php
+ class Project {
+ public $id;
+
+ function __construct($id) {
+ $this->id = $id;
+ }
+ }
+
+ class ProjectsList extends ArrayIterator {
+ public function add(Project $item) {
+ $this->offsetSet($item->id, $item);
+ }
+ }
+
+ $projects = new ProjectsList();
+ $projects->add(new Project('1'));
+ $projects->add(new Project(2));
+
+ var_dump($projects->offsetExists(1));
+ var_dump($projects->offsetExists('2'));
+?>
+===DONE===
+--EXPECT--
+bool(true)
+bool(true)
+===DONE===