Commit c8f07b5d by Jason Rhinelander Committed by Wenzel Jakob

Use a named rather than anon struct in instance

The anonymous struct nested in a union triggers a -Wnested-anon-type
warning ("anonymous types declared in an anonymous union are an
extension") under clang (#1204).  This names the struct and defines it
out of the definition of `instance` to get around to warning (and makes
the code slightly simpler).
parent 7f170fe4
...@@ -377,16 +377,18 @@ constexpr size_t instance_simple_holder_in_ptrs() { ...@@ -377,16 +377,18 @@ constexpr size_t instance_simple_holder_in_ptrs() {
struct type_info; struct type_info;
struct value_and_holder; struct value_and_holder;
struct nonsimple_values_and_holders {
void **values_and_holders;
uint8_t *status;
};
/// The 'instance' type which needs to be standard layout (need to be able to use 'offsetof') /// The 'instance' type which needs to be standard layout (need to be able to use 'offsetof')
struct instance { struct instance {
PyObject_HEAD PyObject_HEAD
/// Storage for pointers and holder; see simple_layout, below, for a description /// Storage for pointers and holder; see simple_layout, below, for a description
union { union {
void *simple_value_holder[1 + instance_simple_holder_in_ptrs()]; void *simple_value_holder[1 + instance_simple_holder_in_ptrs()];
struct { nonsimple_values_and_holders nonsimple;
void **values_and_holders;
uint8_t *status;
} nonsimple;
}; };
/// Weak references (needed for keep alive): /// Weak references (needed for keep alive):
PyObject *weakrefs; PyObject *weakrefs;
......
Markdown is supported
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