ID:               49207
 User updated by:  ronlentjes at yahoo dot com dot au
 Reported By:      ronlentjes at yahoo dot com dot au
 Status:           Bogus
 Bug Type:         Scripting Engine problem
 Operating System: Linux Fedora 8
-PHP Version:      5.2.4
+PHP Version:      5.3.0
 New Comment:

Hi, I've been trying all day to install 5.3.0 on Fedora 8. Apache
starts up no problem (as it did for 5.2.4). Config looks ok. But output
is mostly blank pages and sometimes shows correct results. But reload
and blank page again. This server still works for all other languages. I
was trying to confirm issue here with latest version but can't get
latest version to work. 5.2.4 worked just before rpm -ev and then rpm
-ivh 5.3.0 rpms. I installed:
php-common-5.3.0-1.fc8.remi.i386.rpm
php-cli-5.3.0-1.fc8.remi.i386.rpm
php-5.3.0-1.fc8.remi.i386.rpm
php-devel-5.3.0-1.fc8.remi.i386.rpm
Resulted in Apache starting without error but complaining about <? when
blank page occurs. But will produce output randomly (even exactly
correct output). Simple test of hello does not work.
Other users on internet complain similarly to blank page problem for
5.3.0.

Here is the simplist I could attach as example:
----
<? error_reporting (E_ALL); ?>
<html><head></head><body>

<?= "hi<br>" ?>

</body></html>
----
Either blank page or 
" ?>
is output.

At first, I thought it was just not mapping .php but the config file
seems ok and syntax chk and module php5_module shows up in apache chk.
/etc/httpd/conf.d was updated with php.conf and so on. 

Puzzled, since 5.2.4 worked a charm just before this install.

Cheers,
Ron Lentjes
LC CLS.


Previous Comments:
------------------------------------------------------------------------

[2009-08-11 09:42:46] j...@php.net

Please don't report bugs in ancient versions. We only support the
latest releases.

------------------------------------------------------------------------

[2009-08-10 23:20:25] ronlentjes at yahoo dot com dot au

Ok, I tried that exact code even though results must be same.
That worked on 4.2.2.
That did not work on 5.2.4.
I will download the latest I can find for Fedora 8.
If I can't test 5.3.0, I will get latest Fedora and try again.
Get back to you as soon as I can.

I couldn't find that apparent fix on you lists? Do you know of a fix
that you made? One difference I noted between those 2 versions is that
printf() rounds differently. It now rounds with half-even logic instead
of half-up rounding. Also, it is more in-line with all other languages
now in that your old %5.2f use to mean 5 before, 2 after instead of the
expected (and your now current impl of) 5 is width, with 2 decimal
places after decimal. This good guys, but I couldn't find a note about
this fix. Fortunately my tests picked this up right away.

half-up:   1<-->-->2<-->-->3  (1.5, 2.5 -> always up to 2 and 3)
half-even: 1<-->-->2<--<-->3  (1.5, 2.5 -> even of 2 and 3 -> 2 for
both)

C/C++ on linux uses half-even so you are in-line with C/C++ now. You
must have had some custom printf() thing before.

My point is that you made several changes to some major module? Or is
this related in someway to a new GCC?

Ok, I'll upgrade in steps (first to php5 latest for Fed 8) and then
make another HD with latest Fedora just to confirm what fixes the
issue.

Cheers, Ron Lentjes, LC CLS.

------------------------------------------------------------------------

[2009-08-10 11:37:32] scott...@php.net

Works for me in 5.3.0

<?php
$n = 2147483647;
$n = (int) ($n + 1);
var_dump($n);
$n = (int) ($n - 1);
var_dump($n);
?>

Produces
int(-2147483648)
int(2147483647)

------------------------------------------------------------------------

[2009-08-10 10:35:12] j...@php.net

Exactly what version produces correct result (in your opinion) and
_exactly_ what version does not?

------------------------------------------------------------------------

[2009-08-10 10:13:02] ronlentjes at yahoo dot com dot au

Description:
------------
Old version are correct.
Eg 4.2.2 is exhibiting correct integer behavior.
Wrapping issue. All tests on 40 other languages pass according to this
simple test:

Ver 4.2.2

$n = 2147483647;
$n = (int) ($n + 1)
 -> -2147483648 (+wrap, correct)
$n = (int) ($n - 1)
 -> 2147483647 (-wrap, correct)

(C/C++/C#/.../assembly inc,dec/perl(int mode)/python/so on follow
this logic)

Ver 5.2.4

$n = 2147483647;
$n = (int) ($n + 1)
 -> -2147483648 (+wrap, correct)
$n = (int) ($n - 1)
 -> -2147483648 (-max, wrong)

(no other language follow this. Some languages do use +/-max but not
this mix of wrap one way and max the other)

Suggest: back to original +/- wrapping.

Your newer versions are wrong.
You wrap going positive around the integer wheel.
You don't wrap going negative around the integer wheel.
One direction you wrap, the other direction you do a max.

I test all languages and this is incorrect integer behavior.
Your original logic was correct but now broken and affects all
original source code.

Related issue by someone else: 
#30315. Got closed but core issue misunderstood.

Cheers, Ron Lentjes, LC CLS.


Reproduce code:
---------------
Sorry, didn't see these boxes. See above.

Your version is irrelavent here as I am talking about a change from old
to new versionS. New ones don't work. (I could not select irrelavent so
just chose one on list - but that's not the point).



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=49207&edit=1

Reply via email to