--- /dev/null
+From 3d93b6354927247a1569caf22ad27b07e97ee904 Mon Sep 17 00:00:00 2001
+From: Lasse Collin <lasse.collin@tukaani.org>
+Date: Fri, 28 Sep 2012 20:11:09 +0300
+Subject: [PATCH] xz: Improve handling of failed realloc in xrealloc.
+
+Thanks to Jim Meyering.
+---
+ src/xz/util.c | 14 ++++++++++++--
+ 1 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/src/xz/util.c b/src/xz/util.c
+index 987b443..35850f4 100644
+--- a/src/xz/util.c
++++ b/src/xz/util.c
+@@ -26,9 +26,19 @@ xrealloc(void *ptr, size_t size)
+ {
+ assert(size > 0);
+
++ // Save ptr so that we can free it if realloc fails.
++ // The point is that message_fatal ends up calling stdio functions
++ // which in some libc implementations might allocate memory from
++ // the heap. Freeing ptr improves the chances that there's free
++ // memory for stdio functions if they need it.
++ void *p = ptr;
+ ptr = realloc(ptr, size);
+- if (ptr == NULL)
+- message_fatal("%s", strerror(errno));
++
++ if (ptr == NULL) {
++ const int saved_errno = errno;
++ free(p);
++ message_fatal("%s", strerror(saved_errno));
++ }
+
+ return ptr;
+ }
+--
+1.7.6
+
Summary(pl.UTF-8): Koder/Dekoder LZMA
Name: xz
Version: 5.1.2
-Release: 1
+Release: 2
Epoch: 1
License: LGPL v2.1+, helper scripts on GPL v2+
Group: Applications/Archiving
Source0: http://tukaani.org/xz/%{name}-%{version}alpha.tar.gz
# Source0-md5: 9bad1e249537ce69b206815cf28ca87b
Patch0: %{name}-parallel.patch
+Patch1: %{name}-realloc.patch
URL: http://tukaani.org/xz/
%{?with_asm:BuildRequires: gcc >= 5:3.4}
BuildRequires: rpm >= 4.4.9-56
%prep
%setup -q -n %{name}-%{version}alpha
%patch0 -p1
+%patch1 -p1
%build
%configure \