--- gmpy2-2.1.5.orig/src/gmpy2_cache.c 2022-09-24 07:12:17.000000000 +0300 +++ gmpy2-2.1.5/src/gmpy2_cache.c 2023-09-05 17:15:05.035841008 +0300 @@ -537,19 +537,17 @@ if (global.in_gmpympfrcache) { result = global.gmpympfrcache[--(global.in_gmpympfrcache)]; - /* Py_INCREF does not set the debugging pointers, so need to use - _Py_NewReference instead. */ - _Py_NewReference((PyObject*)result); - mpfr_set_prec(result->f, bits); + Py_INCREF((PyObject*)result); } else { - if (!(result = PyObject_New(MPFR_Object, &MPFR_Type))) { + result = PyObject_New(MPFR_Object, &MPFR_Type); + if (result == NULL) { /* LCOV_EXCL_START */ return NULL; /* LCOV_EXCL_STOP */ } - mpfr_init2(result->f, bits); } + mpfr_init2(result->f, bits); result->hash_cache = -1; result->rc = 0; return result; @@ -704,7 +702,7 @@ static MPC_Object * GMPy_MPC_New(mpfr_prec_t rprec, mpfr_prec_t iprec, CTXT_Object *context) { - MPC_Object *self; + MPC_Object *result; if (rprec < 2) { CHECK_CONTEXT(context); @@ -722,29 +720,21 @@ return NULL; } if (global.in_gmpympccache) { - self = global.gmpympccache[--(global.in_gmpympccache)]; - /* Py_INCREF does not set the debugging pointers, so need to use - _Py_NewReference instead. */ - _Py_NewReference((PyObject*)self); - if (rprec == iprec) { - mpc_set_prec(self->c, rprec); - } - else { - mpc_clear(self->c); - mpc_init3(self->c, rprec, iprec); - } + result = global.gmpympccache[--(global.in_gmpympccache)]; + Py_INCREF((PyObject*)result); } else { - if (!(self = PyObject_New(MPC_Object, &MPC_Type))) { + result = PyObject_New(MPC_Object, &MPC_Type); + if (result == NULL) { /* LCOV_EXCL_START */ return NULL; /* LCOV_EXCL_STOP */ } - mpc_init3(self->c, rprec, iprec); } - self->hash_cache = -1; - self->rc = 0; - return self; + mpc_init3(result->c, rprec, iprec); + result->hash_cache = -1; + result->rc = 0; + return result; } static PyObject *