Skip to content

Commit

Permalink
Update to php-gettext 1.0.7+. fixes #1727
Browse files Browse the repository at this point in the history
git-svn-id: http://svn.automattic.com/wordpress/branches/2.0@4004 1a063a9b-81f0-0310-95a4-ce76da25c4cd
  • Loading branch information
ryan committed Jul 6, 2006
1 parent 5c69f2f commit 6515a4d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 12 deletions.
19 changes: 8 additions & 11 deletions wp-includes/gettext.php
Expand Up @@ -61,15 +61,12 @@ 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);
return array_shift(unpack('V', $this->STREAM->read(4)));
} else {
// big endian
$unpacked = unpack('N',$stream);
return array_shift($unpacked);
return array_shift(unpack('N', $this->STREAM->read(4)));
}
}

Expand Down Expand Up @@ -97,24 +94,24 @@ function readintarray($count) {
*/
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;
}

// 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
Expand Down Expand Up @@ -282,7 +279,7 @@ function get_plural_forms() {
} 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;";
Expand All @@ -308,7 +305,7 @@ function select_string($n) {
$plural = 0;

eval("$string");
if ($plural >= $total) $plural = 0;
if ($plural >= $total) $plural = $total - 1;
return $plural;
}

Expand Down
9 changes: 8 additions & 1 deletion wp-includes/streams.php
Expand Up @@ -105,7 +105,14 @@ function FileReader($filename) {
function read($bytes) {
if ($bytes) {
fseek($this->_fd, $this->_pos);
$data = fread($this->_fd, $bytes);

// PHP 5.1.1 does not read more than 8192 bytes in one fread()
// the discussions at PHP Bugs suggest it's the intended behaviour
while ($bytes > 0) {
$chunk = fread($this->_fd, $bytes);
$data .= $chunk;
$bytes -= strlen($chunk);
}
$this->_pos = ftell($this->_fd);

return $data;
Expand Down

0 comments on commit 6515a4d

Please sign in to comment.