From e963386cfbbab1b0fd60579d672307fcc2566553 Mon Sep 17 00:00:00 2001 From: "Darryl L. Pierce" Date: Mon, 28 Jan 2013 14:25:50 +0000 Subject: 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 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(-) (limited to 'qpid/cpp/bindings') diff --git a/qpid/cpp/bindings/swig_perl_typemaps.i b/qpid/cpp/bindings/swig_perl_typemaps.i index 02e2d4a6b6..b703844482 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) { -- cgit v1.2.1