Author: mcpierce
Date: Fri May 10 14:20:35 2013
New Revision: 1481021

URL: http://svn.apache.org/r1481021
Log:
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.

Modified:
    qpid/trunk/qpid/cpp/bindings/CMakeLists.txt
    qpid/trunk/qpid/cpp/include/qpid/swig_perl_typemaps.i

Modified: qpid/trunk/qpid/cpp/bindings/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/CMakeLists.txt?rev=1481021&r1=1481020&r2=1481021&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/CMakeLists.txt (original)
+++ qpid/trunk/qpid/cpp/bindings/CMakeLists.txt Fri May 10 14:20:35 2013
@@ -69,47 +69,41 @@ if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND
   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")
-
-    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)
-
-    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})
-
-        add_subdirectory(qpid/perl)
-    endif (PERL_FOUND)
-  endif (${SWIG_VERSION} VERSION_LESS ${SWIG_MINIMUM_VERSION})
+  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)
+
+      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 (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_FOUND)

Modified: qpid/trunk/qpid/cpp/include/qpid/swig_perl_typemaps.i
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/swig_perl_typemaps.i?rev=1481021&r1=1481020&r2=1481021&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/swig_perl_typemaps.i (original)
+++ qpid/trunk/qpid/cpp/include/qpid/swig_perl_typemaps.i Fri May 10 14:20:35 
2013
@@ -17,6 +17,7 @@
  * under the License.
  */
 
+%newobject VariantToPerl;
 %wrapper %{
 
 #include <stdarg.h>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to