Mercurial > hgrepos > Python > libs > ConfigMix
comparison configmix/_speedups.c @ 602:a2fff0d93d83
Split up fast_pathstr2path into internal implementation and a simple wrapper
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 11 Jan 2022 00:52:56 +0100 |
| parents | 1e7e06ff970a |
| children | e55a42144ba9 |
comparison
equal
deleted
inserted
replaced
| 601:1e7e06ff970a | 602:a2fff0d93d83 |
|---|---|
| 463 } | 463 } |
| 464 | 464 |
| 465 | 465 |
| 466 static | 466 static |
| 467 PyObject * | 467 PyObject * |
| 468 fast_pathstr2path(PyObject *self, PyObject *varname) | 468 _fast_pathstr2path(PyObject *varname, PyObject *self, struct speedups_state *sstate) |
| 469 { | 469 { |
| 470 Py_ssize_t varname_len; | 470 Py_ssize_t varname_len; |
| 471 PyObject *parts = NULL; | 471 PyObject *parts = NULL; |
| 472 Py_ssize_t parts_len; | 472 Py_ssize_t parts_len; |
| 473 PyObject *res = NULL; | 473 PyObject *res = NULL; |
| 474 Py_ssize_t i; | 474 Py_ssize_t i; |
| 475 PyObject *o; | 475 PyObject *o; |
| 476 PyObject *u; | 476 PyObject *u; |
| 477 struct speedups_state *sstate; | |
| 478 | 477 |
| 479 varname_len = PyUnicode_GetLength(varname); | 478 varname_len = PyUnicode_GetLength(varname); |
| 480 if (varname_len < 0) { | 479 if (varname_len < 0) { |
| 481 return NULL; | 480 return NULL; |
| 482 } | 481 } |
| 483 if (varname_len == 0) { | 482 if (varname_len == 0) { |
| 484 return PyTuple_New(0); | 483 return PyTuple_New(0); |
| 485 } | 484 } |
| 486 | 485 |
| 487 sstate = PyModule_GetState(self); | |
| 488 if (sstate == NULL) { | 486 if (sstate == NULL) { |
| 489 PyErr_SetString(PyExc_RuntimeError, "no module state available"); | 487 sstate = PyModule_GetState(self); |
| 490 return NULL; | 488 if (sstate == NULL) { |
| 489 PyErr_SetString(PyExc_RuntimeError, "no module state available"); | |
| 490 return NULL; | |
| 491 } | |
| 491 } | 492 } |
| 492 parts = PyUnicode_Split(varname, sstate->DOT, -1); | 493 parts = PyUnicode_Split(varname, sstate->DOT, -1); |
| 493 if (parts == NULL) { | 494 if (parts == NULL) { |
| 494 goto error; | 495 goto error; |
| 495 } | 496 } |
| 515 | 516 |
| 516 error: | 517 error: |
| 517 Py_XDECREF(parts); | 518 Py_XDECREF(parts); |
| 518 Py_XDECREF(res); | 519 Py_XDECREF(res); |
| 519 return NULL; | 520 return NULL; |
| 521 } | |
| 522 | |
| 523 | |
| 524 static | |
| 525 PyObject * | |
| 526 fast_pathstr2path(PyObject *self, PyObject *varname) | |
| 527 { | |
| 528 return _fast_pathstr2path(varname, self, NULL); | |
| 520 } | 529 } |
| 521 | 530 |
| 522 | 531 |
| 523 static | 532 static |
| 524 PyObject * | 533 PyObject * |
