Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
nexedi
cython
Commits
097ca9cb
Commit
097ca9cb
authored
Apr 27, 2011
by
Vitja Makarov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove tabs
parent
c13cdca3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
105 additions
and
105 deletions
+105
-105
Cython/Compiler/ExprNodes.py
Cython/Compiler/ExprNodes.py
+16
-16
Cython/Compiler/ModuleNode.py
Cython/Compiler/ModuleNode.py
+89
-89
No files found.
Cython/Compiler/ExprNodes.py
View file @
097ca9cb
...
@@ -8473,8 +8473,8 @@ static int __Pyx_cdivision_warning(void) {
...
@@ -8473,8 +8473,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)))
"""
)
"""
)
...
@@ -8497,29 +8497,29 @@ static int %(binding_cfunc)s_init(void); /* proto */
...
@@ -8497,29 +8497,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) {
...
...
Cython/Compiler/ModuleNode.py
View file @
097ca9cb
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment