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 *