allow nullptr when passing void* values
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index 7835561..5bc1a67 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -328,6 +328,10 @@
using type_caster<void_type>::cast;
bool load(handle h, bool) {
+ if (h.ptr() == Py_None) {
+ value = nullptr;
+ return true;
+ }
capsule c(h, true);
if (!c.check())
return false;
@@ -336,8 +340,12 @@
}
static handle cast(void *ptr, return_value_policy /* policy */, handle /* parent */) {
- return capsule(ptr).inc_ref();
+ if (ptr)
+ return capsule(ptr).release();
+ else
+ return handle(Py_None).inc_ref();
}
+
operator void *() { return value; }
private:
void *value;