summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--php-pear-Spreadsheet_Excel_Writer-git.patch46
-rw-r--r--php-pear-Spreadsheet_Excel_Writer.spec4
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