Commit 95d18691 authored by Wenzel Jakob's avatar Wenzel Jakob
Browse files

minor fixes & removed a leak when freeing functions

parent b2c2c792
...@@ -341,7 +341,6 @@ private: ...@@ -341,7 +341,6 @@ private:
static void destruct(function_entry *entry) { static void destruct(function_entry *entry) {
while (entry) { while (entry) {
function_entry *next = entry->next; function_entry *next = entry->next;
delete entry->def;
if (entry->free_data) if (entry->free_data)
entry->free_data(entry->data); entry->free_data(entry->data);
std::free((char *) entry->name); std::free((char *) entry->name);
...@@ -352,6 +351,10 @@ private: ...@@ -352,6 +351,10 @@ private:
std::free((char *) arg.descr); std::free((char *) arg.descr);
Py_XDECREF(arg.value); Py_XDECREF(arg.value);
} }
if (entry->def) {
free((char *) entry->def->ml_doc);
delete entry->def;
}
delete entry; delete entry;
entry = next; entry = next;
} }
...@@ -410,7 +413,7 @@ private: ...@@ -410,7 +413,7 @@ private:
signature += c; 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)"); throw std::runtime_error("Internal error while parsing type signature (2)");
#if !defined(PYBIND11_CPP14) #if !defined(PYBIND11_CPP14)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment