From 7f8476dd3387e9032d55b639ea6dab89896799a2 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Fri, 4 Apr 2014 15:14:47 -0500 Subject: [PATCH 1/4] Fixing leaks (#92); thanks to ksshelt and eltjpm. --- llvmpy/include/llvm_binding/extra.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/llvmpy/include/llvm_binding/extra.h b/llvmpy/include/llvm_binding/extra.h index a689b9a..bdd86d3 100644 --- a/llvmpy/include/llvm_binding/extra.h +++ b/llvmpy/include/llvm_binding/extra.h @@ -186,8 +186,8 @@ PyObject* iterator_to_pylist_deref(iterator begin, iterator end, { PyObject* list = PyList_New(0); for(; begin != end; ++begin) { - PyObject* cap = pycapsule_new(&*begin, capsuleName, className); - PyList_Append(list, cap); + auto_pyobject cap = pycapsule_new(&*begin, capsuleName, className); + PyList_Append(list, *cap); } return list; } @@ -198,8 +198,8 @@ PyObject* iterator_to_pylist(iterator begin, iterator end, { PyObject* list = PyList_New(0); for(; begin != end; ++begin) { - PyObject* cap = pycapsule_new(*begin, capsuleName, className); - PyList_Append(list, cap); + auto_pyobject cap = pycapsule_new(*begin, capsuleName, className); + PyList_Append(list, *cap); } return list; } @@ -575,11 +575,11 @@ PyObject* TargetMachine_addPassesToEmitFile( bool status = TM->addPassesToEmitFile(PM, fso, FTy, disableVerify); if (status) { StringRef sr = rso.str(); - PyObject* buf = PyString_FromStringAndSize(sr.data(), sr.size()); + auto_pyobject buf = PyString_FromStringAndSize(sr.data(), sr.size()); if (!buf) { return NULL; } - if (-1 == PyFile_WriteObject(buf, Out, Py_PRINT_RAW)){ + if (-1 == PyFile_WriteObject(*buf, Out, Py_PRINT_RAW)){ return NULL; } Py_RETURN_TRUE; @@ -891,7 +891,8 @@ public: inline virtual void passEnumerate(const llvm::PassInfo * pass_info){ PyObject* passArg = PyString_FromString(pass_info->getPassArgument()); PyObject* passName = PyString_FromString(pass_info->getPassName()); - PyList_Append(List, Py_BuildValue("(OO)", passArg, passName)); + auto_pyobject pair = Py_BuildValue("(OO)", passArg, passName); + PyList_Append(List, *pair); } }; From c07fce04776832eaf13b1b998392c079236b84d7 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Mon, 28 Apr 2014 11:03:13 -0500 Subject: [PATCH 2/4] Update MANIFEST.in (#99) --- MANIFEST.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 295794c..25a211d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,5 +1,6 @@ -include CHANGELOG LICENSE README setup.py MANIFEST.in +include CHANGELOG LICENSE README.rst setup.py MANIFEST.in versioneer.py recursive-include llvm * +recursive-include llvmpy * recursive-include www * recursive-include test * recursive-include tools * From 749b518b90140b64aa711f33460525222339e000 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Mon, 28 Apr 2014 11:06:48 -0500 Subject: [PATCH 3/4] Update changelog --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 8b89698..45d6a5f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +2014-04-28 0.12.5: +--------------------- + * Fixes memory leaks (#92) + * Fixes tarball (#99) + 2014-03-20 0.12.4: --------------------- * Add dylib_import_library and friends From 34900d27481bd3457a4fac03569eb152b0fa8678 Mon Sep 17 00:00:00 2001 From: Siu Kwan Lam Date: Tue, 29 Apr 2014 13:25:43 -0500 Subject: [PATCH 4/4] Update README.rst --- README.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 0fbcd24..a1abf84 100644 --- a/README.rst +++ b/README.rst @@ -30,10 +30,13 @@ Quickstart to separate your custom build from the default system package. Please replace ``LLVM_INSTALL_PATH`` with your own path. -3. Run ``REQUIRES_RTTI=1 make`` to build. +3. Run ``REQUIRES_RTTI=1 make install`` to build and install. **Note**: With LLVM 3.2, the default build configuration has C++ RTTI disabled. However, llvmpy requires RTTI. + + **Note**: Use ``make -j2 install`` to enable concurrent build. + Replace ``2`` with the actual number of processor you have. 4. Get llvm-py and install it::