##// END OF EJS Templates
dirs: convert PyString to PyBytes...
Gregory Szorc -
r30105:b2f90d88 default
parent child Browse files
Show More
@@ -41,8 +41,8 b' static inline Py_ssize_t _finddir(const '
41 41
42 42 static int _addpath(PyObject *dirs, PyObject *path)
43 43 {
44 const char *cpath = PyString_AS_STRING(path);
45 Py_ssize_t pos = PyString_GET_SIZE(path);
44 const char *cpath = PyBytes_AS_STRING(path);
45 Py_ssize_t pos = PyBytes_GET_SIZE(path);
46 46 PyObject *key = NULL;
47 47 int ret = -1;
48 48
@@ -53,16 +53,16 b' static int _addpath(PyObject *dirs, PyOb'
53 53 in our dict. Try to avoid allocating and
54 54 deallocating a string for each prefix we check. */
55 55 if (key != NULL)
56 ((PyStringObject *)key)->ob_shash = -1;
56 ((PyBytesObject *)key)->ob_shash = -1;
57 57 else {
58 58 /* Force Python to not reuse a small shared string. */
59 key = PyString_FromStringAndSize(cpath,
59 key = PyBytes_FromStringAndSize(cpath,
60 60 pos < 2 ? 2 : pos);
61 61 if (key == NULL)
62 62 goto bail;
63 63 }
64 64 Py_SIZE(key) = pos;
65 ((PyStringObject *)key)->ob_sval[pos] = '\0';
65 ((PyBytesObject *)key)->ob_sval[pos] = '\0';
66 66
67 67 val = PyDict_GetItem(dirs, key);
68 68 if (val != NULL) {
@@ -93,15 +93,15 b' bail:'
93 93
94 94 static int _delpath(PyObject *dirs, PyObject *path)
95 95 {
96 char *cpath = PyString_AS_STRING(path);
97 Py_ssize_t pos = PyString_GET_SIZE(path);
96 char *cpath = PyBytes_AS_STRING(path);
97 Py_ssize_t pos = PyBytes_GET_SIZE(path);
98 98 PyObject *key = NULL;
99 99 int ret = -1;
100 100
101 101 while ((pos = _finddir(cpath, pos - 1)) != -1) {
102 102 PyObject *val;
103 103
104 key = PyString_FromStringAndSize(cpath, pos);
104 key = PyBytes_FromStringAndSize(cpath, pos);
105 105
106 106 if (key == NULL)
107 107 goto bail;
@@ -134,7 +134,7 b' static int dirs_fromdict(PyObject *dirs,'
134 134 Py_ssize_t pos = 0;
135 135
136 136 while (PyDict_Next(source, &pos, &key, &value)) {
137 if (!PyString_Check(key)) {
137 if (!PyBytes_Check(key)) {
138 138 PyErr_SetString(PyExc_TypeError, "expected string key");
139 139 return -1;
140 140 }
@@ -165,7 +165,7 b' static int dirs_fromiter(PyObject *dirs,'
165 165 return -1;
166 166
167 167 while ((item = PyIter_Next(iter)) != NULL) {
168 if (!PyString_Check(item)) {
168 if (!PyBytes_Check(item)) {
169 169 PyErr_SetString(PyExc_TypeError, "expected string");
170 170 break;
171 171 }
@@ -224,7 +224,7 b' PyObject *dirs_addpath(dirsObject *self,'
224 224 {
225 225 PyObject *path;
226 226
227 if (!PyArg_ParseTuple(args, "O!:addpath", &PyString_Type, &path))
227 if (!PyArg_ParseTuple(args, "O!:addpath", &PyBytes_Type, &path))
228 228 return NULL;
229 229
230 230 if (_addpath(self->dict, path) == -1)
@@ -237,7 +237,7 b' static PyObject *dirs_delpath(dirsObject'
237 237 {
238 238 PyObject *path;
239 239
240 if (!PyArg_ParseTuple(args, "O!:delpath", &PyString_Type, &path))
240 if (!PyArg_ParseTuple(args, "O!:delpath", &PyBytes_Type, &path))
241 241 return NULL;
242 242
243 243 if (_delpath(self->dict, path) == -1)
@@ -248,7 +248,7 b' static PyObject *dirs_delpath(dirsObject'
248 248
249 249 static int dirs_contains(dirsObject *self, PyObject *value)
250 250 {
251 return PyString_Check(value) ? PyDict_Contains(self->dict, value) : 0;
251 return PyBytes_Check(value) ? PyDict_Contains(self->dict, value) : 0;
252 252 }
253 253
254 254 static void dirs_dealloc(dirsObject *self)
General Comments 0
You need to be logged in to leave comments. Login now