summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarryl L. Pierce <mcpierce@apache.org>2013-05-10 14:20:35 +0000
committerDarryl L. Pierce <mcpierce@apache.org>2013-05-10 14:20:35 +0000
commit4cc1566f75b7a4e89ba44df9998eebf7d0f65ce1 (patch)
tree40bdfb88d8e8f8884326e93a73bb3ff4a464bc25
parent4640dc1ece124c51b855eda3f7048f775187fed9 (diff)
downloadqpid-python-4cc1566f75b7a4e89ba44df9998eebf7d0f65ce1.tar.gz
QPID-4826: Patch Perl bindings memory leak
Marked the VariantToPerl() method in swig_perl_typemaps.i as returning a new object, which indicates to the Perl bindings that it needs to keep track of the return value for garbage collection. Also removed the Swig 1.3.32 minimum restriction to enable building on RHEL5 systems. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1481021 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/bindings/CMakeLists.txt68
-rw-r--r--qpid/cpp/include/qpid/swig_perl_typemaps.i1
2 files changed, 32 insertions, 37 deletions
diff --git a/qpid/cpp/bindings/CMakeLists.txt b/qpid/cpp/bindings/CMakeLists.txt
index 69a6330c2a..784cc03ea5 100644
--- a/qpid/cpp/bindings/CMakeLists.txt
+++ b/qpid/cpp/bindings/CMakeLists.txt
@@ -69,47 +69,41 @@ if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
endif (PERL_FOUND)
endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))
-set (SWIG_MINIMUM_VERSION "1.3.32")
-
if (SWIG_FOUND)
- if (${SWIG_VERSION} VERSION_LESS ${SWIG_MINIMUM_VERSION})
- message("Found Swig < ${SWIG_MINIMUM_VERSION} - skipping language bindings")
- else()
- set(CMAKE_SWIG_FLAGS "-w361,362,401,467,503")
+ set(CMAKE_SWIG_FLAGS "-w361,362,401,467,503")
- if (PYTHONLIBS_FOUND)
- message("Building Python bindings")
- execute_process(COMMAND ${PYTHON_EXECUTABLE}
- -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')"
- OUTPUT_VARIABLE PYTHON_SITEARCH_PACKAGES
- OUTPUT_STRIP_TRAILING_WHITESPACE)
+ if (PYTHONLIBS_FOUND)
+ message("Building Python bindings")
+ execute_process(COMMAND ${PYTHON_EXECUTABLE}
+ -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')"
+ OUTPUT_VARIABLE PYTHON_SITEARCH_PACKAGES
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
- add_subdirectory(qpid/python)
- add_subdirectory(qmf2/python)
- add_subdirectory(qmf/python)
- endif (PYTHONLIBS_FOUND)
+ add_subdirectory(qpid/python)
+ add_subdirectory(qmf2/python)
+ add_subdirectory(qmf/python)
+ endif (PYTHONLIBS_FOUND)
- if (RUBY_FOUND)
- message("Building Ruby bindings")
- execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['prefix']"
- OUTPUT_VARIABLE RUBY_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_SITEARCH_DIR})
-# string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_ARCH_DIR})
- add_subdirectory(qpid/ruby)
- add_subdirectory(qmf2/ruby)
- add_subdirectory(qmf/ruby)
- endif (RUBY_FOUND)
+ if (RUBY_FOUND)
+ message("Building Ruby bindings")
+ execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['prefix']"
+ OUTPUT_VARIABLE RUBY_PREFIX
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_SITEARCH_DIR})
+# string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_ARCH_DIR})
+ add_subdirectory(qpid/ruby)
+ add_subdirectory(qmf2/ruby)
+ add_subdirectory(qmf/ruby)
+ endif (RUBY_FOUND)
- if (PERL_FOUND)
- message("Building Perl bindings")
- execute_process(COMMAND ${PERL_EXECUTABLE} "-V::prefix:"
- OUTPUT_VARIABLE QPERL_PREFIX
- OUTPUT_STRIP_TRAILING_WHITESPACE)
- string(REGEX REPLACE "'(.*)'" "\\1" PERL_PREFIX ${QPERL_PREFIX})
- string(REPLACE ${PERL_PREFIX} ${CMAKE_INSTALL_PREFIX} PERL_PFX_ARCHLIB ${PERL_ARCHLIB})
+ if (PERL_FOUND)
+ message("Building Perl bindings")
+ execute_process(COMMAND ${PERL_EXECUTABLE} "-V::prefix:"
+ OUTPUT_VARIABLE QPERL_PREFIX
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
+ string(REGEX REPLACE "'(.*)'" "\\1" PERL_PREFIX ${QPERL_PREFIX})
+ string(REPLACE ${PERL_PREFIX} ${CMAKE_INSTALL_PREFIX} PERL_PFX_ARCHLIB ${PERL_ARCHLIB})
- add_subdirectory(qpid/perl)
- endif (PERL_FOUND)
- endif (${SWIG_VERSION} VERSION_LESS ${SWIG_MINIMUM_VERSION})
+ add_subdirectory(qpid/perl)
+ endif (PERL_FOUND)
endif (SWIG_FOUND)
diff --git a/qpid/cpp/include/qpid/swig_perl_typemaps.i b/qpid/cpp/include/qpid/swig_perl_typemaps.i
index c1e1d53d94..da24bfe402 100644
--- a/qpid/cpp/include/qpid/swig_perl_typemaps.i
+++ b/qpid/cpp/include/qpid/swig_perl_typemaps.i
@@ -17,6 +17,7 @@
* under the License.
*/
+%newobject VariantToPerl;
%wrapper %{
#include <stdarg.h>