fixed Py_None reference couting

This commit is contained in:
Wenzel Jakob 2016-09-08 22:53:18 +09:00
parent 5812d64ba2
commit 9d7f7a38a7
2 changed files with 6 additions and 6 deletions

View File

@ -185,7 +185,7 @@ public:
const void *existing_holder = nullptr) { const void *existing_holder = nullptr) {
void *src = const_cast<void *>(_src); void *src = const_cast<void *>(_src);
if (src == nullptr) if (src == nullptr)
return none(); return none().inc_ref();
auto &internals = get_internals(); auto &internals = get_internals();
@ -414,7 +414,7 @@ template <> class type_caster<void_type> {
public: public:
bool load(handle, bool) { return false; } bool load(handle, bool) { return false; }
static handle cast(void_type, return_value_policy /* policy */, handle /* parent */) { static handle cast(void_type, return_value_policy /* policy */, handle /* parent */) {
return none(); return none().inc_ref();
} }
PYBIND11_TYPE_CASTER(void_type, _("None")); PYBIND11_TYPE_CASTER(void_type, _("None"));
}; };
@ -452,7 +452,7 @@ public:
if (ptr) if (ptr)
return capsule(ptr).release(); return capsule(ptr).release();
else else
return none(); return none().inc_ref();
} }
template <typename T> using cast_op_type = void*&; template <typename T> using cast_op_type = void*&;
@ -569,7 +569,7 @@ public:
} }
static handle cast(const char *src, return_value_policy /* policy */, handle /* parent */) { static handle cast(const char *src, return_value_policy /* policy */, handle /* parent */) {
if (src == nullptr) return none(); if (src == nullptr) return none().inc_ref();
return PyUnicode_FromString(src); return PyUnicode_FromString(src);
} }
@ -592,7 +592,7 @@ public:
} }
static handle cast(const wchar_t *src, return_value_policy /* policy */, handle /* parent */) { static handle cast(const wchar_t *src, return_value_policy /* policy */, handle /* parent */) {
if (src == nullptr) return none(); if (src == nullptr) return none().inc_ref();
return PyUnicode_FromWideChar(src, (ssize_t) wcslen(src)); return PyUnicode_FromWideChar(src, (ssize_t) wcslen(src));
} }

View File

@ -62,7 +62,7 @@ public:
template <typename Func> template <typename Func>
static handle cast(Func &&f_, return_value_policy policy, handle /* parent */) { static handle cast(Func &&f_, return_value_policy policy, handle /* parent */) {
if (!f_) if (!f_)
return none(); return none().inc_ref();
auto result = f_.template target<Return (*)(Args...)>(); auto result = f_.template target<Return (*)(Args...)>();
if (result) if (result)