Commit 87a227a1 authored by Stefan Behnel's avatar Stefan Behnel

merged in Vitja's tab removals

parents 070bfaea 097ca9cb
...@@ -8526,8 +8526,8 @@ static int __Pyx_cdivision_warning(void) { ...@@ -8526,8 +8526,8 @@ static int __Pyx_cdivision_warning(void) {
# from intobject.c # from intobject.c
division_overflow_test_code = UtilityCode( division_overflow_test_code = UtilityCode(
proto=""" proto="""
#define UNARY_NEG_WOULD_OVERFLOW(x) \ #define UNARY_NEG_WOULD_OVERFLOW(x) \
(((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x))) (((x) < 0) & ((unsigned long)(x) == 0-(unsigned long)(x)))
""") """)
...@@ -8550,29 +8550,29 @@ static int %(binding_cfunc)s_init(void); /* proto */ ...@@ -8550,29 +8550,29 @@ static int %(binding_cfunc)s_init(void); /* proto */
impl=""" impl="""
static PyObject *%(binding_cfunc)s_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) { static PyObject *%(binding_cfunc)s_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module) {
%(binding_cfunc)s_object *op = PyObject_GC_New(%(binding_cfunc)s_object, %(binding_cfunc)s); %(binding_cfunc)s_object *op = PyObject_GC_New(%(binding_cfunc)s_object, %(binding_cfunc)s);
if (op == NULL) if (op == NULL)
return NULL; return NULL;
op->func.m_ml = ml; op->func.m_ml = ml;
Py_XINCREF(self); Py_XINCREF(self);
op->func.m_self = self; op->func.m_self = self;
Py_XINCREF(module); Py_XINCREF(module);
op->func.m_module = module; op->func.m_module = module;
PyObject_GC_Track(op); PyObject_GC_Track(op);
return (PyObject *)op; return (PyObject *)op;
} }
static void %(binding_cfunc)s_dealloc(%(binding_cfunc)s_object *m) { static void %(binding_cfunc)s_dealloc(%(binding_cfunc)s_object *m) {
PyObject_GC_UnTrack(m); PyObject_GC_UnTrack(m);
Py_XDECREF(m->func.m_self); Py_XDECREF(m->func.m_self);
Py_XDECREF(m->func.m_module); Py_XDECREF(m->func.m_module);
PyObject_GC_Del(m); PyObject_GC_Del(m);
} }
static PyObject *%(binding_cfunc)s_descr_get(PyObject *func, PyObject *obj, PyObject *type) { static PyObject *%(binding_cfunc)s_descr_get(PyObject *func, PyObject *obj, PyObject *type) {
if (obj == Py_None) if (obj == Py_None)
obj = NULL; obj = NULL;
return PyMethod_New(func, obj, type); return PyMethod_New(func, obj, type);
} }
static int %(binding_cfunc)s_init(void) { static int %(binding_cfunc)s_init(void) {
......
...@@ -2863,104 +2863,104 @@ static int __Pyx_main(int argc, wchar_t **argv) { ...@@ -2863,104 +2863,104 @@ static int __Pyx_main(int argc, wchar_t **argv) {
static wchar_t* static wchar_t*
__Pyx_char2wchar(char* arg) __Pyx_char2wchar(char* arg)
{ {
wchar_t *res; wchar_t *res;
#ifdef HAVE_BROKEN_MBSTOWCS #ifdef HAVE_BROKEN_MBSTOWCS
/* Some platforms have a broken implementation of /* Some platforms have a broken implementation of
* mbstowcs which does not count the characters that * mbstowcs which does not count the characters that
* would result from conversion. Use an upper bound. * would result from conversion. Use an upper bound.
*/ */
size_t argsize = strlen(arg); size_t argsize = strlen(arg);
#else #else
size_t argsize = mbstowcs(NULL, arg, 0); size_t argsize = mbstowcs(NULL, arg, 0);
#endif #endif
size_t count; size_t count;
unsigned char *in; unsigned char *in;
wchar_t *out; wchar_t *out;
#ifdef HAVE_MBRTOWC #ifdef HAVE_MBRTOWC
mbstate_t mbs; mbstate_t mbs;
#endif #endif
if (argsize != (size_t)-1) { if (argsize != (size_t)-1) {
res = (wchar_t *)malloc((argsize+1)*sizeof(wchar_t)); res = (wchar_t *)malloc((argsize+1)*sizeof(wchar_t));
if (!res) if (!res)
goto oom; goto oom;
count = mbstowcs(res, arg, argsize+1); count = mbstowcs(res, arg, argsize+1);
if (count != (size_t)-1) { if (count != (size_t)-1) {
wchar_t *tmp; wchar_t *tmp;
/* Only use the result if it contains no /* Only use the result if it contains no
surrogate characters. */ surrogate characters. */
for (tmp = res; *tmp != 0 && for (tmp = res; *tmp != 0 &&
(*tmp < 0xd800 || *tmp > 0xdfff); tmp++) (*tmp < 0xd800 || *tmp > 0xdfff); tmp++)
; ;
if (*tmp == 0) if (*tmp == 0)
return res; return res;
} }
free(res); free(res);
} }
/* Conversion failed. Fall back to escaping with surrogateescape. */ /* Conversion failed. Fall back to escaping with surrogateescape. */
#ifdef HAVE_MBRTOWC #ifdef HAVE_MBRTOWC
/* Try conversion with mbrtwoc (C99), and escape non-decodable bytes. */ /* Try conversion with mbrtwoc (C99), and escape non-decodable bytes. */
/* Overallocate; as multi-byte characters are in the argument, the /* Overallocate; as multi-byte characters are in the argument, the
actual output could use less memory. */ actual output could use less memory. */
argsize = strlen(arg) + 1; argsize = strlen(arg) + 1;
res = malloc(argsize*sizeof(wchar_t)); res = malloc(argsize*sizeof(wchar_t));
if (!res) goto oom; if (!res) goto oom;
in = (unsigned char*)arg; in = (unsigned char*)arg;
out = res; out = res;
memset(&mbs, 0, sizeof mbs); memset(&mbs, 0, sizeof mbs);
while (argsize) { while (argsize) {
size_t converted = mbrtowc(out, (char*)in, argsize, &mbs); size_t converted = mbrtowc(out, (char*)in, argsize, &mbs);
if (converted == 0) if (converted == 0)
/* Reached end of string; null char stored. */ /* Reached end of string; null char stored. */
break; break;
if (converted == (size_t)-2) { if (converted == (size_t)-2) {
/* Incomplete character. This should never happen, /* Incomplete character. This should never happen,
since we provide everything that we have - since we provide everything that we have -
unless there is a bug in the C library, or I unless there is a bug in the C library, or I
misunderstood how mbrtowc works. */ misunderstood how mbrtowc works. */
fprintf(stderr, "unexpected mbrtowc result -2\\n"); fprintf(stderr, "unexpected mbrtowc result -2\\n");
return NULL; return NULL;
} }
if (converted == (size_t)-1) { if (converted == (size_t)-1) {
/* Conversion error. Escape as UTF-8b, and start over /* Conversion error. Escape as UTF-8b, and start over
in the initial shift state. */ in the initial shift state. */
*out++ = 0xdc00 + *in++; *out++ = 0xdc00 + *in++;
argsize--; argsize--;
memset(&mbs, 0, sizeof mbs); memset(&mbs, 0, sizeof mbs);
continue; continue;
} }
if (*out >= 0xd800 && *out <= 0xdfff) { if (*out >= 0xd800 && *out <= 0xdfff) {
/* Surrogate character. Escape the original /* Surrogate character. Escape the original
byte sequence with surrogateescape. */ byte sequence with surrogateescape. */
argsize -= converted; argsize -= converted;
while (converted--) while (converted--)
*out++ = 0xdc00 + *in++; *out++ = 0xdc00 + *in++;
continue; continue;
} }
/* successfully converted some bytes */ /* successfully converted some bytes */
in += converted; in += converted;
argsize -= converted; argsize -= converted;
out++; out++;
} }
#else #else
/* Cannot use C locale for escaping; manually escape as if charset /* Cannot use C locale for escaping; manually escape as if charset
is ASCII (i.e. escape all bytes > 128. This will still roundtrip is ASCII (i.e. escape all bytes > 128. This will still roundtrip
correctly in the locale's charset, which must be an ASCII superset. */ correctly in the locale's charset, which must be an ASCII superset. */
res = malloc((strlen(arg)+1)*sizeof(wchar_t)); res = malloc((strlen(arg)+1)*sizeof(wchar_t));
if (!res) goto oom; if (!res) goto oom;
in = (unsigned char*)arg; in = (unsigned char*)arg;
out = res; out = res;
while(*in) while(*in)
if(*in < 128) if(*in < 128)
*out++ = *in++; *out++ = *in++;
else else
*out++ = 0xdc00 + *in++; *out++ = 0xdc00 + *in++;
*out = 0; *out = 0;
#endif #endif
return res; return res;
oom: oom:
fprintf(stderr, "out of memory\\n"); fprintf(stderr, "out of memory\\n");
return NULL; return NULL;
} }
int int
......
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