You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by mc...@apache.org on 2013/01/28 15:25:50 UTC

svn commit: r1439422 - /qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i

Author: mcpierce
Date: Mon Jan 28 14:25:50 2013
New Revision: 1439422

URL: http://svn.apache.org/viewvc?rev=1439422&view=rev
Log:
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 <ji...@gmx.co.uk>

Modified:
    qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i

Modified: qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i?rev=1439422&r1=1439421&r2=1439422&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i (original)
+++ qpid/trunk/qpid/cpp/bindings/swig_perl_typemaps.i Mon Jan 28 14:25:50 2013
@@ -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) {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org