FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Remove unnecessary casts related to unicode_decode_call_errorhandler. · java66liu/python@e26be87 · GitHub

forked from glix/python

Commit e26be87

Browse files
alexandre.vassalotti
committed
Remove unnecessary casts related to unicode_decode_call_errorhandler.
Make the _PyUnicode_Resize macro a static function. These changes are needed to avoid breaking strict aliasing rules. git-svn-id: http://svn.python.org/projects/python/trunk@67932 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent 75a8b72 commit e26be87

1 file changed

Lines changed: 29 additions & 27 deletions

File tree

‎Objects/unicodeobject.c‎

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ void unicode_dealloc(register PyUnicodeObject *unicode)
386386
}
387387
}
388388

389-
int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
389+
static
390+
int _PyUnicode_Resize(PyUnicodeObject **unicode, Py_ssize_t length)
390391
{
391392
register PyUnicodeObject *v;
392393

@@ -395,7 +396,7 @@ int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
395396
PyErr_BadInternalCall();
396397
return -1;
397398
}
398-
v = (PyUnicodeObject *)*unicode;
399+
v = *unicode;
399400
if (v == NULL || !PyUnicode_Check(v) || Py_REFCNT(v) != 1 || length < 0) {
400401
PyErr_BadInternalCall();
401402
return -1;
@@ -412,7 +413,7 @@ int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
412413
Py_UNICODE_COPY(w->str, v->str,
413414
length < v->length ? length : v->length);
414415
Py_DECREF(*unicode);
415-
*unicode = (PyObject *)w;
416+
*unicode = w;
416417
return 0;
417418
}
418419

@@ -421,9 +422,10 @@ int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
421422
return unicode_resize(v, length);
422423
}
423424

424-
/* Internal API for use in unicodeobject.c only ! */
425-
#define _PyUnicode_Resize(unicodevar, length) \
426-
PyUnicode_Resize(((PyObject **)(unicodevar)), length)
425+
int PyUnicode_Resize(PyObject **unicode, Py_ssize_t length)
426+
{
427+
return _PyUnicode_Resize((PyUnicodeObject **)unicode, length);
428+
}
427429

428430
PyObject *PyUnicode_FromUnicode(const Py_UNICODE *u,
429431
Py_ssize_t size)
@@ -937,7 +939,7 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
937939
PyObject_Free(callresults);
938940
if (abuffer)
939941
PyObject_Free(abuffer);
940-
_PyUnicode_Resize(&string, s - PyUnicode_AS_UNICODE(string));
942+
PyUnicode_Resize(&string, s - PyUnicode_AS_UNICODE(string));
941943
return string;
942944
fail:
943945
if (callresults) {
@@ -1345,7 +1347,7 @@ int unicode_decode_call_errorhandler(const char *errors, PyObject **errorHandler
13451347
const char *encoding, const char *reason,
13461348
const char *input, Py_ssize_t insize, Py_ssize_t *startinpos,
13471349
Py_ssize_t *endinpos, PyObject **exceptionObject, const char **inptr,
1348-
PyObject **output, Py_ssize_t *outpos, Py_UNICODE **outptr)
1350+
PyUnicodeObject **output, Py_ssize_t *outpos, Py_UNICODE **outptr)
13491351
{
13501352
static char *argparse = "O!n;decoding error handler must return (unicode, int) tuple";
13511353

@@ -1405,7 +1407,7 @@ int unicode_decode_call_errorhandler(const char *errors, PyObject **errorHandler
14051407
if (requiredsize > outsize) {
14061408
if (requiredsize<2*outsize)
14071409
requiredsize = 2*outsize;
1408-
if (PyUnicode_Resize(output, requiredsize) < 0)
1410+
if (_PyUnicode_Resize(output, requiredsize) < 0)
14091411
goto onError;
14101412
*outptr = PyUnicode_AS_UNICODE(*output) + *outpos;
14111413
}
@@ -1604,7 +1606,7 @@ PyObject *PyUnicode_DecodeUTF7Stateful(const char *s,
16041606
errors, &errorHandler,
16051607
"utf7", errmsg,
16061608
starts, size, &startinpos, &endinpos, &exc, &s,
1607-
(PyObject **)&unicode, &outpos, &p))
1609+
&unicode, &outpos, &p))
16081610
goto onError;
16091611
}
16101612

@@ -1615,7 +1617,7 @@ PyObject *PyUnicode_DecodeUTF7Stateful(const char *s,
16151617
errors, &errorHandler,
16161618
"utf7", "unterminated shift sequence",
16171619
starts, size, &startinpos, &endinpos, &exc, &s,
1618-
(PyObject **)&unicode, &outpos, &p))
1620+
&unicode, &outpos, &p))
16191621
goto onError;
16201622
if (s < e)
16211623
goto restart;
@@ -1942,7 +1944,7 @@ PyObject *PyUnicode_DecodeUTF8Stateful(const char *s,
19421944
errors, &errorHandler,
19431945
"utf8", errmsg,
19441946
starts, size, &startinpos, &endinpos, &exc, &s,
1945-
(PyObject **)&unicode, &outpos, &p))
1947+
&unicode, &outpos, &p))
19461948
goto onError;
19471949
}
19481950
if (consumed)
@@ -2222,7 +2224,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s,
22222224
errors, &errorHandler,
22232225
"utf32", errmsg,
22242226
starts, size, &startinpos, &endinpos, &exc, &s,
2225-
(PyObject **)&unicode, &outpos, &p))
2227+
&unicode, &outpos, &p))
22262228
goto onError;
22272229
}
22282230

@@ -2496,7 +2498,7 @@ PyUnicode_DecodeUTF16Stateful(const char *s,
24962498
errors, &errorHandler,
24972499
"utf16", errmsg,
24982500
starts, size, &startinpos, &endinpos, &exc, (const char **)&q,
2499-
(PyObject **)&unicode, &outpos, &p))
2501+
&unicode, &outpos, &p))
25002502
goto onError;
25012503
}
25022504

@@ -2717,7 +2719,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
27172719
errors, &errorHandler,
27182720
"unicodeescape", "end of string in escape sequence",
27192721
starts, size, &startinpos, &endinpos, &exc, &s,
2720-
(PyObject **)&v, &outpos, &p))
2722+
&v, &outpos, &p))
27212723
goto onError;
27222724
goto nextByte;
27232725
}
@@ -2729,7 +2731,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
27292731
errors, &errorHandler,
27302732
"unicodeescape", message,
27312733
starts, size, &startinpos, &endinpos, &exc, &s,
2732-
(PyObject **)&v, &outpos, &p))
2734+
&v, &outpos, &p))
27332735
goto onError;
27342736
goto nextByte;
27352737
}
@@ -2768,7 +2770,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
27682770
errors, &errorHandler,
27692771
"unicodeescape", "illegal Unicode character",
27702772
starts, size, &startinpos, &endinpos, &exc, &s,
2771-
(PyObject **)&v, &outpos, &p))
2773+
&v, &outpos, &p))
27722774
goto onError;
27732775
}
27742776
break;
@@ -2810,7 +2812,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
28102812
errors, &errorHandler,
28112813
"unicodeescape", message,
28122814
starts, size, &startinpos, &endinpos, &exc, &s,
2813-
(PyObject **)&v, &outpos, &p))
2815+
&v, &outpos, &p))
28142816
goto onError;
28152817
break;
28162818

@@ -2824,7 +2826,7 @@ PyObject *PyUnicode_DecodeUnicodeEscape(const char *s,
28242826
errors, &errorHandler,
28252827
"unicodeescape", message,
28262828
starts, size, &startinpos, &endinpos, &exc, &s,
2827-
(PyObject **)&v, &outpos, &p))
2829+
&v, &outpos, &p))
28282830
goto onError;
28292831
}
28302832
else {
@@ -3113,7 +3115,7 @@ PyObject *PyUnicode_DecodeRawUnicodeEscape(const char *s,
31133115
errors, &errorHandler,
31143116
"rawunicodeescape", "truncated \\uXXXX",
31153117
starts, size, &startinpos, &endinpos, &exc, &s,
3116-
(PyObject **)&v, &outpos, &p))
3118+
&v, &outpos, &p))
31173119
goto onError;
31183120
goto nextByte;
31193121
}
@@ -3145,7 +3147,7 @@ PyObject *PyUnicode_DecodeRawUnicodeEscape(const char *s,
31453147
errors, &errorHandler,
31463148
"rawunicodeescape", "\\Uxxxxxxxx out of range",
31473149
starts, size, &startinpos, &endinpos, &exc, &s,
3148-
(PyObject **)&v, &outpos, &p))
3150+
&v, &outpos, &p))
31493151
goto onError;
31503152
}
31513153
nextByte:
@@ -3315,7 +3317,7 @@ PyObject *_PyUnicode_DecodeUnicodeInternal(const char *s,
33153317
errors, &errorHandler,
33163318
"unicode_internal", reason,
33173319
starts, size, &startinpos, &endinpos, &exc, &s,
3318-
(PyObject **)&v, &outpos, &p)) {
3320+
&v, &outpos, &p)) {
33193321
goto onError;
33203322
}
33213323
}
@@ -3695,7 +3697,7 @@ PyObject *PyUnicode_DecodeASCII(const char *s,
36953697
errors, &errorHandler,
36963698
"ascii", "ordinal not in range(128)",
36973699
starts, size, &startinpos, &endinpos, &exc, &s,
3698-
(PyObject **)&v, &outpos, &p))
3700+
&v, &outpos, &p))
36993701
goto onError;
37003702
}
37013703
}
@@ -3996,7 +3998,7 @@ PyObject *PyUnicode_DecodeCharmap(const char *s,
39963998
errors, &errorHandler,
39973999
"charmap", "character maps to <undefined>",
39984000
starts, size, &startinpos, &endinpos, &exc, &s,
3999-
(PyObject **)&v, &outpos, &p)) {
4001+
&v, &outpos, &p)) {
40004002
goto onError;
40014003
}
40024004
continue;
@@ -4046,7 +4048,7 @@ PyObject *PyUnicode_DecodeCharmap(const char *s,
40464048
errors, &errorHandler,
40474049
"charmap", "character maps to <undefined>",
40484050
starts, size, &startinpos, &endinpos, &exc, &s,
4049-
(PyObject **)&v, &outpos, &p)) {
4051+
&v, &outpos, &p)) {
40504052
Py_DECREF(x);
40514053
goto onError;
40524054
}
@@ -4797,7 +4799,7 @@ int charmaptranslate_makespace(PyObject **outobj, Py_UNICODE **outp,
47974799
/* exponentially overallocate to minimize reallocations */
47984800
if (requiredsize < 2 * oldsize)
47994801
requiredsize = 2 * oldsize;
4800-
if (_PyUnicode_Resize(outobj, requiredsize) < 0)
4802+
if (PyUnicode_Resize(outobj, requiredsize) < 0)
48014803
return -1;
48024804
*outp = PyUnicode_AS_UNICODE(*outobj) + outpos;
48034805
}
@@ -4976,7 +4978,7 @@ PyObject *PyUnicode_TranslateCharmap(const Py_UNICODE *p,
49764978
/* Resize if we allocated to much */
49774979
respos = str-PyUnicode_AS_UNICODE(res);
49784980
if (respos<PyUnicode_GET_SIZE(res)) {
4979-
if (_PyUnicode_Resize(&res, respos) < 0)
4981+
if (PyUnicode_Resize(&res, respos) < 0)
49804982
goto onError;
49814983
}
49824984
Py_XDECREF(exc);

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL