aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Python/modsupport.c
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2024-02-12 07:53:52 +0300
committershadchin <shadchin@yandex-team.com>2024-02-12 08:07:36 +0300
commitce1b7ca3171f9158180640c6a02a74b4afffedea (patch)
treee47c1e8391b1b0128262c1e9b1e6ed4c8fff2348 /contrib/tools/python3/src/Python/modsupport.c
parent57350d96f030db90f220ce50ee591d5c5d403df7 (diff)
downloadydb-ce1b7ca3171f9158180640c6a02a74b4afffedea.tar.gz
Update Python from 3.11.8 to 3.12.2
Diffstat (limited to 'contrib/tools/python3/src/Python/modsupport.c')
-rw-r--r--contrib/tools/python3/src/Python/modsupport.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/contrib/tools/python3/src/Python/modsupport.c b/contrib/tools/python3/src/Python/modsupport.c
index 89ffae8c0f..df4ae35a52 100644
--- a/contrib/tools/python3/src/Python/modsupport.c
+++ b/contrib/tools/python3/src/Python/modsupport.c
@@ -3,6 +3,7 @@
#include "Python.h"
#include "pycore_abstract.h" // _PyIndex_Check()
+#include "pycore_object.h" // _PyType_IsReady()
#define FLAG_SIZE_T 1
typedef double va_double;
@@ -10,9 +11,6 @@ typedef double va_double;
static PyObject *va_build_value(const char *, va_list, int);
static PyObject **va_build_stack(PyObject **small_stack, Py_ssize_t small_stack_len, const char *, va_list, int, Py_ssize_t*);
-/* Package context -- the full module name for package imports */
-const char *_Py_PackageContext = NULL;
-
int
_Py_convert_optional_to_ssize_t(PyObject *obj, void *result)
@@ -96,16 +94,12 @@ static PyObject *do_mkvalue(const char**, va_list *, int);
static void
do_ignore(const char **p_format, va_list *p_va, char endchar, Py_ssize_t n, int flags)
{
- PyObject *v;
- Py_ssize_t i;
assert(PyErr_Occurred());
- v = PyTuple_New(n);
- for (i = 0; i < n; i++) {
- PyObject *exception, *value, *tb, *w;
-
- PyErr_Fetch(&exception, &value, &tb);
- w = do_mkvalue(p_format, p_va, flags);
- PyErr_Restore(exception, value, tb);
+ PyObject *v = PyTuple_New(n);
+ for (Py_ssize_t i = 0; i < n; i++) {
+ PyObject *exc = PyErr_GetRaisedException();
+ PyObject *w = do_mkvalue(p_format, p_va, flags);
+ PyErr_SetRaisedException(exc);
if (w != NULL) {
if (v != NULL) {
PyTuple_SET_ITEM(v, i, w);
@@ -359,8 +353,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
else
n = -1;
if (u == NULL) {
- v = Py_None;
- Py_INCREF(v);
+ v = Py_NewRef(Py_None);
}
else {
if (n < 0)
@@ -410,8 +403,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
else
n = -1;
if (str == NULL) {
- v = Py_None;
- Py_INCREF(v);
+ v = Py_NewRef(Py_None);
}
else {
if (n < 0) {
@@ -446,8 +438,7 @@ do_mkvalue(const char **p_format, va_list *p_va, int flags)
else
n = -1;
if (str == NULL) {
- v = Py_None;
- Py_INCREF(v);
+ v = Py_NewRef(Py_None);
}
else {
if (n < 0) {
@@ -694,7 +685,7 @@ PyModule_AddStringConstant(PyObject *m, const char *name, const char *value)
int
PyModule_AddType(PyObject *module, PyTypeObject *type)
{
- if (PyType_Ready(type) < 0) {
+ if (!_PyType_IsReady(type) && PyType_Ready(type) < 0) {
return -1;
}