summaryrefslogtreecommitdiffstats
path: root/Modules/parsermodule.c
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2007-08-26 04:51:28 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2007-08-26 04:51:28 (GMT)
commit3fcbea567b65ca26e25f082259f1493330e32936 (patch)
tree5ec25a0188b53b42992ee3e1c1b86680336da02b /Modules/parsermodule.c
parented2b7397a0558414e1ec61c48bc889bb05e261ea (diff)
downloadcpython-3fcbea567b65ca26e25f082259f1493330e32936.zip
cpython-3fcbea567b65ca26e25f082259f1493330e32936.tar.gz
cpython-3fcbea567b65ca26e25f082259f1493330e32936.tar.bz2
Use unicode and remove support for some uses of str8.
Diffstat (limited to 'Modules/parsermodule.c')
-rw-r--r--Modules/parsermodule.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
index 66d17b7..d4f4166 100644
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -105,14 +105,14 @@ node2tuple(node *n, /* node to convert */
}
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);
}
else if (ISTERMINAL(TYPE(n))) {
PyObject *result = mkseq(2 + lineno + col_offset);
if (result != NULL) {
(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)
(void) addelem(result, 2, PyInt_FromLong(n->n_lineno));
if (col_offset == 1)
@@ -681,6 +681,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
if (ISTERMINAL(type)) {
Py_ssize_t len = PyObject_Size(elem);
PyObject *temp;
+ const char *temp_str;
if ((len != 2) && (len != 3)) {
err_string("terminal nodes must have 2 or 3 entries");
@@ -689,7 +690,7 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
temp = PySequence_GetItem(elem, 1);
if (temp == NULL)
return 0;
- if (!PyString_Check(temp)) {
+ if (!PyUnicode_Check(temp)) {
PyErr_Format(parser_error,
"second item in terminal node must be a string,"
" found %s",
@@ -716,10 +717,11 @@ build_node_children(PyObject *tuple, node *root, int *line_num)
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);
if (strn != NULL)
- (void) memcpy(strn, PyString_AS_STRING(temp), len);
+ (void) memcpy(strn, temp_str, len);
Py_DECREF(temp);
}
else if (!ISNONTERMINAL(type)) {
@@ -804,10 +806,12 @@ build_node_tree(PyObject *tuple)
}
if (res && encoding) {
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);
- if (res->n_str != NULL)
- (void) memcpy(res->n_str, PyString_AS_STRING(encoding), len);
+ if (res->n_str != NULL && temp != NULL)
+ (void) memcpy(res->n_str, temp, len);
Py_DECREF(encoding);
Py_DECREF(tuple);
}