[wp-trac] Re: [WordPress Trac] #3780: gettext fails to determine byteorder on 64bit systems with php5.2.1

WordPress Trac wp-trac at lists.automattic.com
Tue Nov 20 23:59:05 GMT 2007


#3780: gettext fails to determine byteorder on 64bit systems with php5.2.1
---------------------------------------------+------------------------------
 Reporter:  abtime                           |        Owner:  anonymous
     Type:  defect                           |       Status:  new      
 Priority:  normal                           |    Milestone:  2.4      
Component:  i18n                             |      Version:  2.2      
 Severity:  critical                         |   Resolution:           
 Keywords:  i18n has-patch 2nd-opition test  |  
---------------------------------------------+------------------------------
Comment (by madsjensen):

 This works !!! thanks ... I have tested many other hacks but only this
 seems to works.

 Apache version  2.0.61
 PHP version     5.2.4
 MySQL version   5.0.45
 Architecture    amd64
 Operating system: FreeBSD

 Danish localization

 cheers mads


 Replying to [comment:23 nyuwec]:
 > Replying to [comment:21 nbachiyski]:
 > > Could everybody, please, try the both patches and report if any is
 working.
 >
 > I have a gentoo linux on a 64 bit AMD processor, described in: #5356,
 fighting with the above described problem. PHP using PHP_INT_SIZE=8.
 >
 > Apply 3780.diff: FAILS.
 > Apply gettext-64-without-bitwise-ops.diff: WORKS!
 >
 > As I can see the gettext-64-without-bitwise-ops.diff patches the gettext
 to the format described in: http://wordpress.org/support/topic/63038 That
 patch also works on both 64bit and on 32 bit systems I can test!
 >
 > If only the 3780.diff applied to a 32 bit system it still works,
 applying the gettext-64-without-bitwise-ops.diff: still works!
 >
 > So this code in the gettext.php (starting at line 105) works for me on
 both 32 and 64 bit systems:
 > {{{
 >               // Caching can be turned off
 >               $this->enable_cache = $enable_cache;
 >
 >               // $MAGIC1 = (int)0x950412de; //bug in PHP 5.0.2, see
 https://savannah.nongnu.org/bugs/?func=detailitem&item_id=10565
 >               $MAGIC1 = (int) - 1794895138;
 >               // $MAGIC2 = (int)0xde120495; //bug
 >               $MAGIC2 = (int) - 569244523;
 >               // 64-bit fix
 >               $MAGIC3 = (int) 2500072158;
 >
 >               $this->STREAM = $Reader;
 >               $magic = $this->readint();
 >               if ($magic == $MAGIC1 || $magic == $MAGIC3) { // to make
 sure it works for 64-bit platforms
 >                       $this->BYTEORDER = 0;
 >               } elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) {
 >                       $this->BYTEORDER = 1;
 >               } else {
 >                       $this->error = 1; // not MO file
 >                       return false;
 >               }
 >
 > }}}

-- 
Ticket URL: <http://trac.wordpress.org/ticket/3780#comment:25>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list