[qpid-cpp/f17] Fixed memory leak in Perl bindings typemap.
Darryl L. Pierce
mcpierce at fedoraproject.org
Mon Jan 28 16:20:03 UTC 2013
commit 8966542658b8a6329dc26fe87396c3c3346c82e1
Author: Darryl L. Pierce <dpierce at redhat.com>
Date: Mon Jan 28 09:54:55 2013 -0500
Fixed memory leak in Perl bindings typemap.
- Resolves: BZ#885149
...ixes-a-memory-leak-in-the-Perl-language-b.patch | 55 ++++++++++++++++++++
qpid-cpp.spec | 10 +++-
2 files changed, 64 insertions(+), 1 deletions(-)
---
diff --git a/02-QPID-4493-Fixes-a-memory-leak-in-the-Perl-language-b.patch b/02-QPID-4493-Fixes-a-memory-leak-in-the-Perl-language-b.patch
new file mode 100644
index 0000000..2e969b9
--- /dev/null
+++ b/02-QPID-4493-Fixes-a-memory-leak-in-the-Perl-language-b.patch
@@ -0,0 +1,55 @@
+From 1f70ff91f87cff4e78240d8288ab825a333a7f11 Mon Sep 17 00:00:00 2001
+From: "Darryl L. Pierce" <mcpierce at apache.org>
+Date: Mon, 28 Jan 2013 14:25:50 +0000
+Subject: [PATCH] QPID-4493: Fixes a memory leak in the Perl language bindings.
+
+Replaces creating hashes and arrays using a scalar type with the
+appropriate Perl API calls for creating a hash and an array.
+
+Submitted by: Jimmy Jones <jimmyjones2 at gmx.co.uk>
+
+git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1439422 13f79535-47bb-0310-9956-ffa450edef68
+---
+ qpid/cpp/bindings/swig_perl_typemaps.i | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/qpid/cpp/bindings/swig_perl_typemaps.i b/qpid/cpp/bindings/swig_perl_typemaps.i
+index 201e64b..f294183 100644
+--- a/qpid/cpp/bindings/swig_perl_typemaps.i
++++ b/qpid/cpp/bindings/swig_perl_typemaps.i
+@@ -119,28 +119,24 @@
+ }
+
+ SV* MapToPerl(const qpid::types::Variant::Map* map) {
+- SV *result = newSV(0);
+- HV *hv = (HV *)sv_2mortal((SV *)newHV());
++ HV *hv = newHV();
+ qpid::types::Variant::Map::const_iterator iter;
+ for (iter = map->begin(); iter != map->end(); iter++) {
+ const std::string key(iter->first);
+ SV* perlval = VariantToPerl(&(iter->second));
+ hv_store(hv, key.c_str(), key.size(), perlval, 0);
+ }
+- SvSetSV(result, newRV_noinc((SV *)hv));
+- return result;
++ return sv_2mortal(newRV_noinc((SV *)hv));
+ }
+
+ SV* ListToPerl(const qpid::types::Variant::List* list) {
+- SV* result = newSV(0);
+- AV* av = (AV *)sv_2mortal((SV *)newAV());
++ AV* av = newAV();
+ qpid::types::Variant::List::const_iterator iter;
+ for (iter = list->begin(); iter != list->end(); iter++) {
+ SV* perlval = VariantToPerl(&(*iter));
+ av_push(av, perlval);
+ }
+- SvSetSV(result, newRV_noinc((SV *)av));
+- return result;
++ return sv_2mortal(newRV_noinc((SV *)av));
+ }
+
+ void PerlToMap(SV* hash, qpid::types::Variant::Map* map) {
+--
+1.8.1
+
diff --git a/qpid-cpp.spec b/qpid-cpp.spec
index b16bca1..e8fa35b 100644
--- a/qpid-cpp.spec
+++ b/qpid-cpp.spec
@@ -30,7 +30,7 @@
Name: qpid-cpp
Version: 0.20
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Libraries for Qpid C++ client applications
License: ASL 2.0
URL: http://qpid.apache.org
@@ -68,6 +68,7 @@ BuildRequires: libaio-devel
Patch1: 01-Add-support-for-ARM-processors.patch
+Patch2: 02-QPID-4493-Fixes-a-memory-leak-in-the-Perl-language-b.patch
%description
@@ -567,6 +568,9 @@ Management and diagnostic tools for Apache Qpid brokers and clients.
%setup -q -n qpid-%{version}
%setup -q -T -D -b 1 -n qpid-%{version}
+%patch2 -p2
+
+# qpid-store
pushd ../store-%{version}.%{store_svnrev}
%patch1 -p1
popd
@@ -759,6 +763,10 @@ rm -rf %{buildroot}
%changelog
+* Mon Jan 28 2013 Darryl L. Pierce <dpierce at redhat.com> - 0.20-2
+- Fixed memory leak in Perl bindings typemap.
+- Resolves: BZ#885149
+
* Wed Jan 23 2013 Darryl L. Pierce <dpierce at redhat.com> - 0.20-1
- Rebased Qpid on release 0.20.
- Rebased Store on SVN revision 4521.
More information about the scm-commits
mailing list