Re: PATCH: bug #46701
| From: | Ilia Alshanetsky | Date: | Mon, 05 Jan 2009 23:35:19 +0000 |
| Subject: | Re: PATCH: bug #46701 | ||
| References: | 1 2 3 4 5 6 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-42497@lists.php.net to get a copy of this message | ||
The fix looks to be safe enough to MFH, I see no API breakage.
On 5-Jan-09, at 3:36 PM, Felipe Pena wrote:
Hi, Em Sáb, 2009-01-03 às 11:20 -0800, shire escreveu:Ilia AlshanetskyFelipe Pena wrote:I've committed it in 5_3 and HEAD. Ilia, should it be in 5_2 too? Thanks for the patch, Shire. ;) --Regards, Felipe PenaEm Sáb, 2009-01-03 às 10:31 -0200, Felipe Pena escreveu:Hey, Good point Felipe, thanks! I've updated my patches as well to include this change and verified all the tests.Em Sáb, 2009-01-03 às 10:27 -0200, Felipe Pena escreveu:In the end, I see that it requires the macro too, hehe. So, a little change in your patch: - case IS_DOUBLE: - index = (long)Z_DVAL_P(dim); + case IS_DOUBLE: { + DVAL_TO_LVAL(Z_DVAL_P(dim), index); goto num_index; - + }Em Sex, 2009-01-02 às 21:03 -0800, shire escreveu:Errr, I mean, the case IS_DOUBLE stuff in zend_fetch_dimension_address_inner will be superfluous.I've created a patch for bug #46701 (http://bugs.php.net/bug.php?id=46701) but it requires Zend changes, it can be found at the links below for all branches. I've verified all tests pass. We may want to verify it for other architectures due to the nature of it being a float conversion problem, I tested on Intel OS X 10.5.5. But this should at least be equivalent to $array[intval($double)] now. http://tekrat.com/patches/bug46701.php6.patch http://tekrat.com/patches/bug46701.php53.patch http://tekrat.com/patches/bug46701.php52.patchI suppose that should we also change the fetch (ZEND_FETCH_DIM_*)? And probably: case IS_DOUBLE: index = (long)Z_DVAL_P(dim); goto num_index; And zend_execute.c (zend_fetch_dimension_address_inner) will be superfluous with this change.