Kaydet (Commit) 90b68907 authored tarafından Neil Schemenauer's avatar Neil Schemenauer

Add function attributes that allow GCC to check the arguments of printf-like

functions.
üst 15691085
...@@ -25,8 +25,10 @@ extern "C" { ...@@ -25,8 +25,10 @@ extern "C" {
#include "pydebug.h" #include "pydebug.h"
DL_IMPORT(void) PySys_WriteStdout(const char *format, ...); DL_IMPORT(void) PySys_WriteStdout(const char *format, ...)
DL_IMPORT(void) PySys_WriteStderr(const char *format, ...); __attribute__((format(printf, 1, 2)));
DL_IMPORT(void) PySys_WriteStderr(const char *format, ...)
__attribute__((format(printf, 1, 2)));
#define addarc _Py_addarc #define addarc _Py_addarc
#define addbit _Py_addbit #define addbit _Py_addbit
......
...@@ -77,7 +77,8 @@ extern DL_IMPORT(int) PyErr_BadArgument(void); ...@@ -77,7 +77,8 @@ extern DL_IMPORT(int) PyErr_BadArgument(void);
extern DL_IMPORT(PyObject *) PyErr_NoMemory(void); extern DL_IMPORT(PyObject *) PyErr_NoMemory(void);
extern DL_IMPORT(PyObject *) PyErr_SetFromErrno(PyObject *); extern DL_IMPORT(PyObject *) PyErr_SetFromErrno(PyObject *);
extern DL_IMPORT(PyObject *) PyErr_SetFromErrnoWithFilename(PyObject *, char *); extern DL_IMPORT(PyObject *) PyErr_SetFromErrnoWithFilename(PyObject *, char *);
extern DL_IMPORT(PyObject *) PyErr_Format(PyObject *, const char *, ...); extern DL_IMPORT(PyObject *) PyErr_Format(PyObject *, const char *, ...)
__attribute__((format(printf, 2, 3)));
#ifdef MS_WINDOWS #ifdef MS_WINDOWS
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *); extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *);
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int); extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
...@@ -126,8 +127,10 @@ extern DL_IMPORT(PyObject *) PyErr_ProgramText(char *, int); ...@@ -126,8 +127,10 @@ extern DL_IMPORT(PyObject *) PyErr_ProgramText(char *, int);
#ifndef HAVE_SNPRINTF #ifndef HAVE_SNPRINTF
#include <stdarg.h> #include <stdarg.h>
extern DL_IMPORT(int) PyOS_snprintf(char *str, size_t size, const char *format, ...); extern DL_IMPORT(int) PyOS_snprintf(char *str, size_t size, const char *format, ...)
extern DL_IMPORT(int) PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va); __attribute__((format(printf, 3, 4)));
extern DL_IMPORT(int) PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
__attribute__((format(printf, 3, 0)));
#else #else
# define PyOS_vsnprintf vsnprintf # define PyOS_vsnprintf vsnprintf
# define PyOS_snprintf snprintf # define PyOS_snprintf snprintf
......
...@@ -56,8 +56,10 @@ extern DL_IMPORT(PyTypeObject) PyString_Type; ...@@ -56,8 +56,10 @@ extern DL_IMPORT(PyTypeObject) PyString_Type;
extern DL_IMPORT(PyObject *) PyString_FromStringAndSize(const char *, int); extern DL_IMPORT(PyObject *) PyString_FromStringAndSize(const char *, int);
extern DL_IMPORT(PyObject *) PyString_FromString(const char *); extern DL_IMPORT(PyObject *) PyString_FromString(const char *);
extern DL_IMPORT(PyObject *) PyString_FromFormatV(const char*, va_list); extern DL_IMPORT(PyObject *) PyString_FromFormatV(const char*, va_list)
extern DL_IMPORT(PyObject *) PyString_FromFormat(const char*, ...); __attribute__((format(printf, 1, 0)));
extern DL_IMPORT(PyObject *) PyString_FromFormat(const char*, ...)
__attribute__((format(printf, 1, 2)));
extern DL_IMPORT(int) PyString_Size(PyObject *); extern DL_IMPORT(int) PyString_Size(PyObject *);
extern DL_IMPORT(char *) PyString_AsString(PyObject *); extern DL_IMPORT(char *) PyString_AsString(PyObject *);
extern DL_IMPORT(void) PyString_Concat(PyObject **, PyObject *); extern DL_IMPORT(void) PyString_Concat(PyObject **, PyObject *);
......
...@@ -13,8 +13,10 @@ DL_IMPORT(FILE *) PySys_GetFile(char *, FILE *); ...@@ -13,8 +13,10 @@ DL_IMPORT(FILE *) PySys_GetFile(char *, FILE *);
DL_IMPORT(void) PySys_SetArgv(int, char **); DL_IMPORT(void) PySys_SetArgv(int, char **);
DL_IMPORT(void) PySys_SetPath(char *); DL_IMPORT(void) PySys_SetPath(char *);
DL_IMPORT(void) PySys_WriteStdout(const char *format, ...); DL_IMPORT(void) PySys_WriteStdout(const char *format, ...)
DL_IMPORT(void) PySys_WriteStderr(const char *format, ...); __attribute__((format(printf, 1, 2)));
DL_IMPORT(void) PySys_WriteStderr(const char *format, ...)
__attribute__((format(printf, 1, 2)));
extern DL_IMPORT(PyObject *) _PySys_TraceFunc, *_PySys_ProfileFunc; extern DL_IMPORT(PyObject *) _PySys_TraceFunc, *_PySys_ProfileFunc;
extern DL_IMPORT(int) _PySys_CheckInterval; extern DL_IMPORT(int) _PySys_CheckInterval;
......
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