[issue9518] PyModuleDef_HEAD_INIT does not explicitly initial all fields of m_base
Dave Malcolm
report at bugs.python.org
Thu Aug 5 01:43:32 CEST 2010
New submission from Dave Malcolm <dmalcolm at redhat.com>:
Attempting to compile Python 3 extension modules on GCC with "-Wmissing-field-initializers" enabled leads to warnings from the PyModuleDef_HEAD_INIT macro
Seen attempting to build SELinux python bindings against python 3.1 with "-W -Werror", the "-W" implies "-Wmissing-field-initializers":
> cc -Werror -Wall -W -Wundef -Wshadow -Wmissing-noreturn
> > -Wmissing-format-attribute -I../include -I/usr/include -D_GNU_SOURCE
> > -D_FILE_OFFSET_BITS=64 -I/usr/include/python3.1 -fPIC -DSHARED -c -o
> > audit2why.lo audit2why.c
> > cc1: warnings being treated as errors
> > audit2why.c:439: error: missing initializer
> > audit2why.c:439: error: (near initialization for ?moduledef.m_base.m_init¹)
> > make: *** [audit2why.lo] Error 1
The PyModuleDef_HEAD_INIT is intended to initialize m_base within a PyModuleDef, but only explicitly initializes the PyObject_HEAD fields:
#define PyModuleDef_HEAD_INIT {PyObject_HEAD_INIT(NULL)}
typedef struct PyModuleDef_Base {
PyObject_HEAD
PyObject* (*m_init)(void);
Py_ssize_t m_index;
PyObject* m_copy;
} PyModuleDef_Base;
typedef struct PyModuleDef{
PyModuleDef_Base m_base;
const char* m_name;
const char* m_doc;
Py_ssize_t m_size;
PyMethodDef *m_methods;
inquiry m_reload;
traverseproc m_traverse;
inquiry m_clear;
freefunc m_free;
} PyModuleDef;
The attached patch extends it to also explicitly zero the other m_base fields.
----------
components: Extension Modules
files: py3k-initialize-all-of-m_base.patch
keywords: patch, patch
messages: 112926
nosy: dmalcolm
priority: normal
severity: normal
stage: patch review
status: open
title: PyModuleDef_HEAD_INIT does not explicitly initial all fields of m_base
type: compile error
versions: Python 3.1, Python 3.2, Python 3.3
Added file: http://bugs.python.org/file18396/py3k-initialize-all-of-m_base.patch
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue9518>
_______________________________________
More information about the Python-bugs-list
mailing list