diff options
-rw-r--r-- | php-pear-Spreadsheet_Excel_Writer-git.patch | 46 | ||||
-rw-r--r-- | php-pear-Spreadsheet_Excel_Writer.spec | 4 |
2 files changed, 49 insertions, 1 deletions
diff --git a/php-pear-Spreadsheet_Excel_Writer-git.patch b/php-pear-Spreadsheet_Excel_Writer-git.patch new file mode 100644 index 0000000..93dd608 --- /dev/null +++ b/php-pear-Spreadsheet_Excel_Writer-git.patch @@ -0,0 +1,46 @@ +diff -urN Spreadsheet_Excel_Writer-0.9.3.org/Spreadsheet/Excel/Writer/Worksheet.php Spreadsheet_Excel_Writer-0.9.3/Spreadsheet/Excel/Writer/Worksheet.php +--- Spreadsheet_Excel_Writer-0.9.3.org/Spreadsheet/Excel/Writer/Worksheet.php 2012-01-26 03:12:56.000000000 +0100 ++++ Spreadsheet_Excel_Writer-0.9.3/Spreadsheet/Excel/Writer/Worksheet.php 2014-06-18 10:55:21.000000000 +0200 +@@ -1629,20 +1629,25 @@ + */ + function writeStringBIFF8($row, $col, $str, $format = null) + { ++ // If the string is Unicode and contains any "surrogate pairs" then using mb_strlen($str, 'UTF-16LE') ++ // as the string length will cause a "found unreadable content" error when opening the worksheet in Excel ++ // (apparently the length is expected to be the number of 16-bit code points, not the number of characters). ++ // Instead, always use the byte length divided by two for Unicode strings, and if mb_strlen() exists use ++ // mb_strlen($str, '8bit') just in case mbstring.func_overload is set to overload strlen(). + if ($this->_input_encoding == 'UTF-16LE') + { +- $strlen = function_exists('mb_strlen') ? mb_strlen($str, 'UTF-16LE') : (strlen($str) / 2); ++ $strlen = (function_exists('mb_strlen') ? mb_strlen($str, '8bit') : strlen($str)) / 2; + $encoding = 0x1; + } + elseif ($this->_input_encoding != '') + { + $str = iconv($this->_input_encoding, 'UTF-16LE', $str); +- $strlen = function_exists('mb_strlen') ? mb_strlen($str, 'UTF-16LE') : (strlen($str) / 2); ++ $strlen = (function_exists('mb_strlen') ? mb_strlen($str, '8bit') : strlen($str)) / 2; + $encoding = 0x1; + } + else + { +- $strlen = strlen($str); ++ $strlen = function_exists('mb_strlen') ? mb_strlen($str, '8bit') : strlen($str); + $encoding = 0x0; + } + $record = 0x00FD; // Record identifier +@@ -2484,10 +2489,10 @@ + $length = 2 + count($ranges) * 8; + $header = pack('vv', $record, $length); + $data = pack('v', count($ranges)); +- foreach($ranges as $range) ++ foreach ($ranges as $range) + $data .= pack('vvvv', $range[0], $range[2], $range[1], $range[3]); +- $string=$header.$data; +- $this->_append(&$string, true); ++ $string = $header.$data; ++ $this->_append($string, true); + } + } + diff --git a/php-pear-Spreadsheet_Excel_Writer.spec b/php-pear-Spreadsheet_Excel_Writer.spec index 2ffbe67..e5a133b 100644 --- a/php-pear-Spreadsheet_Excel_Writer.spec +++ b/php-pear-Spreadsheet_Excel_Writer.spec @@ -5,11 +5,12 @@ Summary: %{_pearname} - package for generating Excel spreadsheets Summary(pl.UTF-8): %{_pearname} - pakiet generujÄ…cy arkusze Excela Name: php-pear-%{_pearname} Version: 0.9.3 -Release: 2 +Release: 3 License: LGPL Group: Development/Languages/PHP Source0: http://pear.php.net/get/%{_pearname}-%{version}.tgz # Source0-md5: a1c353beb819fa4b7146f5325625774b +Patch0: %{name}-git.patch URL: http://pear.php.net/package/Spreadsheet_Excel_Writer/ BuildRequires: php-pear-PEAR >= 1:1.4.0-0.b1 BuildRequires: rpm-php-pearprov >= 4.4.2-11 @@ -42,6 +43,7 @@ Ta klasa ma w PEAR status: %{_status}. %prep %pear_package_setup +%patch0 -p1 %install rm -rf $RPM_BUILD_ROOT |