]> git.pld-linux.org Git - packages/xz.git/commitdiff
- rel 2; realloc patch from git auto/th/xz-5.1.2-2
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 15 Nov 2012 13:35:57 +0000 (14:35 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Thu, 15 Nov 2012 13:35:57 +0000 (14:35 +0100)
xz-realloc.patch [new file with mode: 0644]
xz.spec

diff --git a/xz-realloc.patch b/xz-realloc.patch
new file mode 100644 (file)
index 0000000..586a375
--- /dev/null
@@ -0,0 +1,39 @@
+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
+
diff --git a/xz.spec b/xz.spec
index c61fa663332e177aaa308262539c54b18e417f5c..55ceab825eefb9431dcc8496c38125fbe5d09c77 100644 (file)
--- a/xz.spec
+++ b/xz.spec
@@ -18,13 +18,14 @@ Summary:    LZMA Encoder/Decoder
 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
@@ -117,6 +118,7 @@ Biblioteka statyczna LZMA.
 %prep
 %setup -q -n %{name}-%{version}alpha
 %patch0 -p1
+%patch1 -p1
 
 %build
 %configure \
This page took 0.30865 seconds and 4 git commands to generate.