From 95d18691c9c7877d73cf70c47c6d811552dce434 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sun, 17 Jan 2016 22:36:40 +0100 Subject: [PATCH] minor fixes & removed a leak when freeing functions --- include/pybind11/pybind11.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h index 9de62e46..ba3f8909 100644 --- a/include/pybind11/pybind11.h +++ b/include/pybind11/pybind11.h @@ -341,7 +341,6 @@ private: static void destruct(function_entry *entry) { while (entry) { function_entry *next = entry->next; - delete entry->def; if (entry->free_data) entry->free_data(entry->data); std::free((char *) entry->name); @@ -352,6 +351,10 @@ private: std::free((char *) arg.descr); Py_XDECREF(arg.value); } + if (entry->def) { + free((char *) entry->def->ml_doc); + delete entry->def; + } delete entry; entry = next; } @@ -410,7 +413,7 @@ private: signature += c; } } - if (type_depth != 0 && types[type_index ] != nullptr) + if (type_depth != 0 || types[type_index] != nullptr) throw std::runtime_error("Internal error while parsing type signature (2)"); #if !defined(PYBIND11_CPP14)