1 Treat string literals as const char* instead of char*.
3 PyICU had a lot of implicit conversions from string constant to char*,
4 which could cause huge lists of compiler messages like this:
6 warning: deprecated conversion from string constant to ‘char*’
8 This patch attempts to fix as many of these as possible inside the
9 PyICU codebase. Some cannot be fixed, because the cooresponding
10 problem is in Python headers. This is known as Python issue #6952.
12 2011-02-11 Martin von Gagern
15 http://bugs.gentoo.org/237888
16 http://bugs.python.org/issue6952
18 Index: PyICU-1.1/common.cpp
19 ===================================================================
20 --- PyICU-1.1.orig/common.cpp
21 +++ PyICU-1.1/common.cpp
22 @@ -178,7 +178,8 @@ EXPORT PyObject *PyUnicode_FromUnicodeSt
25 EXPORT UnicodeString &PyString_AsUnicodeString(PyObject *object,
26 - char *encoding, char *mode,
27 + const char *encoding,
29 UnicodeString &string)
31 UErrorCode status = U_ZERO_ERROR;
32 @@ -206,7 +207,7 @@ EXPORT UnicodeString &PyString_AsUnicode
34 if (U_FAILURE(status))
37 + const char *reasonName;
39 switch (stop.reason) {
41 @@ -241,7 +242,8 @@ EXPORT UnicodeString &PyString_AsUnicode
44 EXPORT UnicodeString &PyObject_AsUnicodeString(PyObject *object,
45 - char *encoding, char *mode,
46 + const char *encoding,
48 UnicodeString &string)
50 if (PyUnicode_Check(object))
51 @@ -672,7 +674,7 @@ static UBool *toUBoolArray(PyObject *arg
55 -int __parseArgs(PyObject *args, char *types, ...)
56 +int __parseArgs(PyObject *args, const char *types, ...)
58 int count = ((PyTupleObject *)(args))->ob_size;
60 @@ -682,7 +684,7 @@ int __parseArgs(PyObject *args, char *ty
61 return _parseArgs(((PyTupleObject *)(args))->ob_item, count, types, list);
64 -int __parseArg(PyObject *arg, char *types, ...)
65 +int __parseArg(PyObject *arg, const char *types, ...)
69 @@ -692,14 +694,14 @@ int __parseArg(PyObject *arg, char *type
73 -int _parseArgs(PyObject **args, int count, char *types, va_list list)
74 +int _parseArgs(PyObject **args, int count, const char *types, va_list list)
76 if (count != strlen(types))
81 -int _parseArgs(PyObject **args, int count, char *types, ...)
82 +int _parseArgs(PyObject **args, int count, const char *types, ...)
86 @@ -1121,7 +1123,7 @@ int _parseArgs(PyObject **args, int coun
90 -PyObject *PyErr_SetArgsError(PyObject *self, char *name, PyObject *args)
91 +PyObject *PyErr_SetArgsError(PyObject *self, const char *name, PyObject *args)
93 if (!PyErr_Occurred())
95 @@ -1135,7 +1137,7 @@ PyObject *PyErr_SetArgsError(PyObject *s
99 -PyObject *PyErr_SetArgsError(PyTypeObject *type, char *name, PyObject *args)
100 +PyObject *PyErr_SetArgsError(PyTypeObject *type, const char *name, PyObject *args)
102 if (!PyErr_Occurred())
104 Index: PyICU-1.1/common.h
105 ===================================================================
106 --- PyICU-1.1.orig/common.h
107 +++ PyICU-1.1/common.h
108 @@ -191,10 +191,12 @@ EXPORT PyObject *PyUnicode_FromUnicodeSt
109 EXPORT PyObject *PyUnicode_FromUnicodeString(const UChar *chars, int size);
111 EXPORT UnicodeString &PyString_AsUnicodeString(PyObject *object,
112 - char *encoding, char *mode,
113 + const char *encoding,
115 UnicodeString &string);
116 EXPORT UnicodeString &PyObject_AsUnicodeString(PyObject *object,
117 - char *encoding, char *mode,
118 + const char *encoding,
120 UnicodeString &string);
121 EXPORT UnicodeString &PyObject_AsUnicodeString(PyObject *object,
122 UnicodeString &string);
123 @@ -208,10 +210,10 @@ int abstract_init(PyObject *self, PyObje
124 #define parseArgs __parseArgs
125 #define parseArg __parseArg
127 -int __parseArgs(PyObject *args, char *types, ...);
128 -int __parseArg(PyObject *arg, char *types, ...);
129 +int __parseArgs(PyObject *args, const char *types, ...);
130 +int __parseArg(PyObject *arg, const char *types, ...);
132 -int _parseArgs(PyObject **args, int count, char *types, va_list list);
133 +int _parseArgs(PyObject **args, int count, const char *types, va_list list);
137 @@ -222,7 +224,7 @@ int _parseArgs(PyObject **args, int coun
138 #define parseArg(arg, types, rest...) \
139 _parseArgs(&(arg), 1, types, ##rest)
141 -int _parseArgs(PyObject **args, int count, char *types, ...);
142 +int _parseArgs(PyObject **args, int count, const char *types, ...);
146 @@ -240,7 +242,7 @@ Formattable *toFormattableArray(PyObject
147 UObject **pl2cpa(PyObject *arg, int *len, classid id, PyTypeObject *type);
148 PyObject *cpa2pl(UObject **array, int len, PyObject *(*wrap)(UObject *, int));
150 -PyObject *PyErr_SetArgsError(PyObject *self, char *name, PyObject *args);
151 -PyObject *PyErr_SetArgsError(PyTypeObject *type, char *name, PyObject *args);
152 +PyObject *PyErr_SetArgsError(PyObject *self, const char *name, PyObject *args);
153 +PyObject *PyErr_SetArgsError(PyTypeObject *type, const char *name, PyObject *args);
155 #endif /* _common_h */
156 Index: PyICU-1.1/errors.cpp
157 ===================================================================
158 --- PyICU-1.1.orig/errors.cpp
159 +++ PyICU-1.1/errors.cpp
164 -static void _setMsg(PyObject *messages, UErrorCode code, char *msg)
165 +static void _setMsg(PyObject *messages, UErrorCode code, const char *msg)
167 PyObject *pycode = PyInt_FromLong((long) code);
168 PyObject *pymsg = PyString_FromString(msg);
169 Index: PyICU-1.1/bases.cpp
170 ===================================================================
171 --- PyICU-1.1.orig/bases.cpp
172 +++ PyICU-1.1/bases.cpp
173 @@ -532,7 +532,7 @@ static int t_unicodestring_init(t_unicod
175 UnicodeString *u, _u;
177 - char *encoding, *mode;
178 + const char *encoding, *mode;
179 int32_t start, length;