Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:44286 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 22959 invoked from network); 15 Jun 2009 14:16:18 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 15 Jun 2009 14:16:18 -0000 Authentication-Results: pb1.pair.com smtp.mail=david.zuelke@bitextender.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=david.zuelke@bitextender.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain bitextender.com from 80.237.132.12 cause and error) X-PHP-List-Original-Sender: david.zuelke@bitextender.com X-Host-Fingerprint: 80.237.132.12 wp005.webpack.hosteurope.de Received: from [80.237.132.12] ([80.237.132.12:49084] helo=wp005.webpack.hosteurope.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 7D/85-27478-0B7563A4 for ; Mon, 15 Jun 2009 10:16:17 -0400 Received: from munich.bitxtender.net ([85.183.90.3] helo=[10.224.254.2]); authenticated by wp005.webpack.hosteurope.de running ExIM with esmtpsa (TLSv1:RC4-SHA:128) id 1MGCyr-0002SR-Dh; Mon, 15 Jun 2009 16:16:13 +0200 Cc: Matt Wilmas Message-ID: To: php-dev List In-Reply-To: Content-Type: multipart/signed; boundary=Apple-Mail-7-480200714; micalg=sha1; protocol="application/pkcs7-signature" Mime-Version: 1.0 (Apple Message framework v935.3) X-Priority: 3 Date: Mon, 15 Jun 2009 16:16:12 +0200 References: <973FE469-3C5C-4096-B7EE-A16B518555DA@bitextender.com> X-Mailer: Apple Mail (2.935.3) X-bounce-key: webpack.hosteurope.de;david.zuelke@bitextender.com;1245075376;c5d57974; Subject: Re: [PHP-DEV] zend_hash_update question From: david.zuelke@bitextender.com (=?ISO-8859-1?Q?David_Z=FClke?=) --Apple-Mail-7-480200714 Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Patch updated to reflect the change. It's against 5.3 btw. Now who =20 will commit it so it makes it into the next RC? :) - David On 15.06.2009, at 15:47, David Z=FClke wrote: > On 15.06.2009, at 15:40, Matt Wilmas wrote: > >> Hi David, > > Hey Matt, > > >> ----- Original Message ----- >> From: "David Z=FClke" >> Sent: Monday, June 15, 2009 >> >>> Hi folks, >>> >>> while fixing http://bugs.php.net/bug.php?id=3D48557 I was wondering =20= >>> why zend_hash_update doesn't automatically convert numeric strings =20= >>> to integers. >>> >>> Doing $foo =3D array('1' =3D> 'bar'); actually results in an integer = =20 >>> key with value 1, not in a string. The problem in the bug above =20 >>> was that when ext/soap decodes keys from a hashmap, it won't =20 >>> convert numeric string keys to integers. As a result, such items =20= >>> in an array were never accessible from PHP code (that is, unless =20= >>> you did some array_keys()/array_values() stunts, of course). >>> >>> Is this intentional? It seems that every internal feature that =20 >>> would like to deal with hashes needs to implement this string-=20 >>> >int casting behavior of PHP itself. Why doesn't =20 >>> zend_hash_update() do it automatically? >> >> I saw the patch there for Bug #48557, and the is_numeric_string() + =20= >> zend_hash/index/_update() isn't necessary -- that's what =20 >> zend_symtable_update() is for. :-) It's used elsewhere and takes =20 >> care of checking for numeric string keys. > > Aaah! > > >> hash_update() used to do that until the "symtable" variation was =20 >> added several years ago, and there were places in PHP that weren't =20= >> updated and had this issue. Obviously there's still one at least! =20= >> (Or maybe that's newer code that simply used the wrong function in =20= >> the first place...) > > Yeah I guess that's the case here. > > >> I'm assuming hash_update() is intended to be an optimized version =20 >> by only working with strings, in places where it's already known -- =20= >> in the engine, walking through arrays where the type of key is =20 >> already known, etc. >> >> Kinda confusing, but hope that helps. Seems like they should've =20 >> *added* a new function that does what hash_update() now does, =20 >> instead of basically renaming the old version to =20 >> symtable_update(). :-/ > > It does help, absolutely. Thanks a lot! > > - David --Apple-Mail-7-480200714 Content-Disposition: attachment; filename=smime.p7s Content-Type: application/pkcs7-signature; name=smime.p7s Content-Transfer-Encoding: base64 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGXDCCAxUw ggJ+oAMCAQICEHvgrI6DXM4XmK4XvhB7lh4wDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA4MDgyMjE0MjEzOVoXDTA5MDgyMjE0MjEz OVowTjEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjErMCkGCSqGSIb3DQEJARYcZGF2 aWQuenVlbGtlQGJpdGV4dGVuZGVyLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANx+fe+8oUaO+fotZryRBmD3NAP00QikUIqIyZKiwJ4BS9M8DdqN0lAh443rdw1h/H0NVkDMv7+7 MnSUYKU+BTwulvU7WDGLm7JGkXXWkGl5vHUnUWltUkk8ImUDiunYPnuyUVyQlnZkp1ThihYoR4xo MmiiC+6mHLl8FzMKimOU/UREpGfyLqYhsNdXiVgm+W8feO6aY3fDaenn9EVZEXJs6t7KxLpCIlD2 8+0dHlX+91vV4a9zfMObjEkLW3w/uBTT+uHypySHo/EWw0/pOD34sMdhSh0Xyr4un+Uv/DHH1ft3 5TJq6DEIrIL4iUpGa7Nsqjoah5SgpWwJY+gWaC8CAwEAAaNcMFowDgYDVR0PAQH/BAQDAgSwMBEG CWCGSAGG+EIBAQQEAwIFIDAnBgNVHREEIDAegRxkYXZpZC56dWVsa2VAYml0ZXh0ZW5kZXIuY29t MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcNAQEFBQADgYEAbEPiMjevqmbl2NuGieZkF5fNV1Uhr0dL wGDDxIcIHGnBeEBVy/5NpAKJUCU4lqG+bqD1S4MdyyLxvzlhOSZEqjcEwtwXqLVsaDakYFHsRGaS DU160+1b/wlf8/OR5tof7y5MA8p6MSQHjXWOy38A71wvwFowGZPF5lY617W5mUMwggM/MIICqKAD AgECAgENMA0GCSqGSIb3DQEBBQUAMIHRMQswCQYDVQQGEwJaQTEVMBMGA1UECBMMV2VzdGVybiBD YXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAYBgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYD VQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMSQwIgYDVQQDExtUaGF3dGUgUGVy c29uYWwgRnJlZW1haWwgQ0ExKzApBgkqhkiG9w0BCQEWHHBlcnNvbmFsLWZyZWVtYWlsQHRoYXd0 ZS5jb20wHhcNMDMwNzE3MDAwMDAwWhcNMTMwNzE2MjM1OTU5WjBiMQswCQYDVQQGEwJaQTElMCMG A1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBlcnNv bmFsIEZyZWVtYWlsIElzc3VpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMSmPFVz VftOucqZWh5owHUEcJ3f6f+jHuy9zfVb8hp2vX8MOmHyv1HOAdTlUAow1wJjWiyJFXCO3cnwK4Va qj9xVsuvPAsH5/EfkTYkKhPPK9Xzgnc9A74r/rsYPge/QIACZNenprufZdHFKlSFD0gEf6e20Txh BEAeZBlyYLf7AgMBAAGjgZQwgZEwEgYDVR0TAQH/BAgwBgEB/wIBADBDBgNVHR8EPDA6MDigNqA0 hjJodHRwOi8vY3JsLnRoYXd0ZS5jb20vVGhhd3RlUGVyc29uYWxGcmVlbWFpbENBLmNybDALBgNV HQ8EBAMCAQYwKQYDVR0RBCIwIKQeMBwxGjAYBgNVBAMTEVByaXZhdGVMYWJlbDItMTM4MA0GCSqG SIb3DQEBBQUAA4GBAEiM0VCD6gsuzA2jZqxnD3+vrL7CF6FDlpSdf0whuPg2H6otnzYvwPQcUCCT cDz9reFhYsPZOhl+hLGZGwDFGguCdJ4lUJRix9sncVcljd2pnDmOjCBPZV+V2vf3h9bGCE6u9uo0 5RAaWzVNd+NWIXiC3CEZNd4ksdMdRv9dX2VPMYIDEDCCAwwCAQEwdjBiMQswCQYDVQQGEwJaQTEl MCMGA1UEChMcVGhhd3RlIENvbnN1bHRpbmcgKFB0eSkgTHRkLjEsMCoGA1UEAxMjVGhhd3RlIFBl cnNvbmFsIEZyZWVtYWlsIElzc3VpbmcgQ0ECEHvgrI6DXM4XmK4XvhB7lh4wCQYFKw4DAhoFAKCC AW8wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDkwNjE1MTQxNjEz WjAjBgkqhkiG9w0BCQQxFgQUwJ+DYVdszjEneooaLSQKUfnQfpowgYUGCSsGAQQBgjcQBDF4MHYw YjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAq BgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhB74KyOg1zOF5iuF74Q e5YeMIGHBgsqhkiG9w0BCRACCzF4oHYwYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBD b25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJ c3N1aW5nIENBAhB74KyOg1zOF5iuF74Qe5YeMA0GCSqGSIb3DQEBAQUABIIBAADcI9Ba4ofJEYPm vV35p2F1GkCmrkzlMAxq9JgGxrEmYunf7OUDQVM5jtwstyysKibIH8iQI76EWDpscAiKWuAEiAXw q5akSzS0cZGwUZ/StDNpCeUq0zVj5mxq1ktrISjXlfZrliB0YgGV8TFiZUDTFMheVcjbGFRShG5s YtvaBn2q3Pen1NPQkMcznOzqd1gS6CflQhZe0UeA0eRE2Y8rKVVjvLoWN0NgeJVc29ky5enXidI6 MLpaImRpTWrHSaEOU4mP8NolT15QikoLzvzdiiDrN9avMr7bQ4ltJhgnfq2Ylxxw1cwfbdj8ao6w PY+CJ5g9kBT4yKc7MwEWFa0AAAAAAAA= --Apple-Mail-7-480200714--