ID: 3176 Updated by: [EMAIL PROTECTED] Reported By: markj at usn dot nl -Status: Open +Status: Wont Fix Bug Type: Misbehaving function Operating System: HPUX/10 PHP Version: 3.0.13 New Comment:
We are sorry, but we can not support PHP 3 related problems anymore. Momentum is gathering for PHP 5, and we think supporting PHP 3 will lead to a waste of resources which we want to put into getting PHP 5 ready. Of course PHP 4 will continue to be supported for the forseeable future. Previous Comments: ------------------------------------------------------------------------ [2000-01-11 08:37:45] markj at usn dot nl Here's the toggle_bit function: function toggle_bit ( &$bitfield, $bitvalue ) { $bitfield ^= $bitvalue; } ------------------------------------------------------------------------ [2000-01-11 07:56:44] markj at usn dot nl I encountered this with version 4.0b3, but I suspect it to be in other versions too... i'll check as soon as I can get 3 running somewhere... I'm currently using PHP4.0b3, and have encountered some inconsistencies when manipulating an integer number at the bit level. I use this integer 'settings' to store up to 30 user-configurable settings for my application. 0 being that all are turned off. When I toggle a specific bit (with my own function toggle_bit( &$bitfield, $bitnr ) (included below)) i get really strange results if I for example do this: $settings = 0; toggle_bit( $settings, 1 ) /* This should toggle bit with value 1, making $settings 1... */ echo $settings /* This will return garbage... */ This gives random results (probably because $settings is signed, the result always has a 1 as the first bit (when i do bindec), but isn't -1 (two's complement) When I first 'turn my value into a unsigned int' by or-ing it with 0: $settings = 0 $newset = ( $settings | 0 ) toggle_bit( $newset, 1 ) echo $newset /* This will return the expected value of 1... */ ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=3176&edit=1