mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-22 21:25:13 +00:00
fixed Py_None reference couting
This commit is contained in:
parent
5812d64ba2
commit
9d7f7a38a7
@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user