summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings
diff options
context:
space:
mode:
authorDarryl L. Pierce <mcpierce@apache.org>2013-01-28 14:25:50 +0000
committerDarryl L. Pierce <mcpierce@apache.org>2013-01-28 14:25:50 +0000
commite963386cfbbab1b0fd60579d672307fcc2566553 (patch)
treed3c6386a147df00eded04ecc332621cffc4616b0 /qpid/cpp/bindings
parent98610a851a775bdd2672fe9ec0af7baabfeef7fc (diff)
downloadqpid-python-e963386cfbbab1b0fd60579d672307fcc2566553.tar.gz
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@gmx.co.uk> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1439422 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/bindings')
-rw-r--r--qpid/cpp/bindings/swig_perl_typemaps.i12
1 files changed, 4 insertions, 8 deletions
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) {