Kaydet (Commit) 3fcbea56 authored tarafından Neal Norwitz's avatar Neal Norwitz

Use unicode and remove support for some uses of str8.

üst ed2b7397
...@@ -1819,7 +1819,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -1819,7 +1819,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
if (!(initial == NULL || PyList_Check(initial) if (!(initial == NULL || PyList_Check(initial)
|| PyBytes_Check(initial) || PyBytes_Check(initial)
|| PyString_Check(initial) || PyTuple_Check(initial) || PyTuple_Check(initial)
|| (c == PyArr_UNI && PyUnicode_Check(initial)))) { || (c == PyArr_UNI && PyUnicode_Check(initial)))) {
it = PyObject_GetIter(initial); it = PyObject_GetIter(initial);
if (it == NULL) if (it == NULL)
...@@ -1862,8 +1862,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds) ...@@ -1862,8 +1862,7 @@ array_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
} }
Py_DECREF(v); Py_DECREF(v);
} }
} else if (initial != NULL && } else if (initial != NULL && PyBytes_Check(initial)) {
(PyString_Check(initial) || PyBytes_Check(initial))) {
PyObject *t_initial, *v; PyObject *t_initial, *v;
t_initial = PyTuple_Pack(1, initial); t_initial = PyTuple_Pack(1, initial);
if (t_initial == NULL) { if (t_initial == NULL) {
......
...@@ -105,14 +105,14 @@ node2tuple(node *n, /* node to convert */ ...@@ -105,14 +105,14 @@ node2tuple(node *n, /* node to convert */
} }
if (TYPE(n) == encoding_decl) if (TYPE(n) == encoding_decl)
(void) addelem(v, i+1, PyString_FromString(STR(n))); (void) addelem(v, i+1, PyUnicode_FromString(STR(n)));
return (v); return (v);
} }
else if (ISTERMINAL(TYPE(n))) { else if (ISTERMINAL(TYPE(n))) {
PyObject *result = mkseq(2 + lineno + col_offset); PyObject *result = mkseq(2 + lineno + col_offset);
if (result != NULL) { if (result != NULL) {
(void) addelem(result, 0, PyInt_FromLong(TYPE(n))); (void) addelem(result, 0, PyInt_FromLong(TYPE(n)));
(void) addelem(result, 1, PyString_FromString(STR(n))); (void) addelem(result, 1, PyUnicode_FromString(STR(n)));
if (lineno == 1) if (lineno == 1)
(void) addelem(result, 2, PyInt_FromLong(n->n_lineno)); (void) addelem(result, 2, PyInt_FromLong(n->n_lineno));
if (col_offset == 1) if (col_offset == 1)
...@@ -681,6 +681,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num) ...@@ -681,6 +681,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
if (ISTERMINAL(type)) { if (ISTERMINAL(type)) {
Py_ssize_t len = PyObject_Size(elem); Py_ssize_t len = PyObject_Size(elem);
PyObject *temp; PyObject *temp;
const char *temp_str;
if ((len != 2) && (len != 3)) { if ((len != 2) && (len != 3)) {
err_string("terminal nodes must have 2 or 3 entries"); err_string("terminal nodes must have 2 or 3 entries");
...@@ -689,7 +690,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num) ...@@ -689,7 +690,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
temp = PySequence_GetItem(elem, 1); temp = PySequence_GetItem(elem, 1);
if (temp == NULL) if (temp == NULL)
return 0; return 0;
if (!PyString_Check(temp)) { if (!PyUnicode_Check(temp)) {
PyErr_Format(parser_error, PyErr_Format(parser_error,
"second item in terminal node must be a string," "second item in terminal node must be a string,"
" found %s", " found %s",
...@@ -716,10 +717,11 @@ build_node_children(PyObject *tuple, node *root, int *line_num) ...@@ -716,10 +717,11 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
Py_DECREF(o); Py_DECREF(o);
} }
} }
len = PyString_GET_SIZE(temp) + 1; temp_str = PyUnicode_AsString(temp);
len = PyUnicode_GET_SIZE(temp) + 1;
strn = (char *)PyObject_MALLOC(len); strn = (char *)PyObject_MALLOC(len);
if (strn != NULL) if (strn != NULL)
(void) memcpy(strn, PyString_AS_STRING(temp), len); (void) memcpy(strn, temp_str, len);
Py_DECREF(temp); Py_DECREF(temp);
} }
else if (!ISNONTERMINAL(type)) { else if (!ISNONTERMINAL(type)) {
...@@ -804,10 +806,12 @@ build_node_tree(PyObject *tuple) ...@@ -804,10 +806,12 @@ build_node_tree(PyObject *tuple)
} }
if (res && encoding) { if (res && encoding) {
Py_ssize_t len; Py_ssize_t len;
len = PyString_GET_SIZE(encoding) + 1; const char *temp;
temp = PyUnicode_AsString(encoding);
len = PyUnicode_GET_SIZE(encoding) + 1;
res->n_str = (char *)PyObject_MALLOC(len); res->n_str = (char *)PyObject_MALLOC(len);
if (res->n_str != NULL) if (res->n_str != NULL && temp != NULL)
(void) memcpy(res->n_str, PyString_AS_STRING(encoding), len); (void) memcpy(res->n_str, temp, len);
Py_DECREF(encoding); Py_DECREF(encoding);
Py_DECREF(tuple); Py_DECREF(tuple);
} }
......
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