X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/ff81ee6e8304a1982a3ec4f5b134764a29d502cf..022dfbbbe3215917d84708eb09acca93b21ae9e0:/wp-includes/gettext.php diff --git a/wp-includes/gettext.php b/wp-includes/gettext.php index ad605cfd..ed94ca9e 100644 --- a/wp-includes/gettext.php +++ b/wp-includes/gettext.php @@ -61,15 +61,14 @@ class gettext_reader { * @return Integer from the Stream */ function readint() { - $stream = $this->STREAM->read(4); if ($this->BYTEORDER == 0) { // low endian - $unpacked = unpack('V',$stream); - return array_shift($unpacked); + $low_end = unpack('V', $this->STREAM->read(4)); + return array_shift($low_end); } else { // big endian - $unpacked = unpack('N',$stream); - return array_shift($unpacked); + $big_end = unpack('N', $this->STREAM->read(4)); + return array_shift($big_end); } } @@ -97,7 +96,7 @@ class gettext_reader { */ function gettext_reader($Reader, $enable_cache = true) { // If there isn't a StreamReader, turn on short circuit mode. - if (! $Reader) { + if (! $Reader || isset($Reader->error) ) { $this->short_circuit = true; return; } @@ -105,16 +104,16 @@ class gettext_reader { // Caching can be turned off $this->enable_cache = $enable_cache; - // $MAGIC1 = (int)0x950412de; //bug in PHP 5 + // $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; $this->STREAM = $Reader; $magic = $this->readint(); - if ($magic == $MAGIC1) { + if ($magic == ($MAGIC1 & 0xFFFFFFFF)) { // to make sure it works for 64-bit platforms $this->BYTEORDER = 0; - } elseif ($magic == $MAGIC2) { + } elseif ($magic == ($MAGIC2 & 0xFFFFFFFF)) { $this->BYTEORDER = 1; } else { $this->error = 1; // not MO file @@ -282,7 +281,7 @@ class gettext_reader { } else { $header = $this->get_translation_string(0); } - if (eregi("plural-forms: (.*)\n", $header, $regs)) + if (eregi("plural-forms: ([^\n]*)\n", $header, $regs)) $expr = $regs[1]; else $expr = "nplurals=2; plural=n == 1 ? 0 : 1;"; @@ -308,7 +307,7 @@ class gettext_reader { $plural = 0; eval("$string"); - if ($plural >= $total) $plural = 0; + if ($plural >= $total) $plural = $total - 1; return $plural; }