Skip to content

Commit

Permalink
pythongh-106078: Move DecimalException to _decimal state (python#106301)
Browse files Browse the repository at this point in the history
  • Loading branch information
CharlieZhao95 committed Jul 2, 2023
1 parent bc7eb17 commit dbefa88
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
17 changes: 9 additions & 8 deletions Modules/_decimal/_decimal.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ typedef struct {
PyTypeObject *PyDec_Type;
PyTypeObject *PyDecSignalDict_Type;
PyTypeObject *DecimalTuple;

/* Top level Exception; inherits from ArithmeticError */
PyObject *DecimalException;
} decimal_state;

static decimal_state global_state;
Expand Down Expand Up @@ -164,9 +167,6 @@ typedef struct {
PyObject *ex; /* corresponding exception */
} DecCondMap;

/* Top level Exception; inherits from ArithmeticError */
static PyObject *DecimalException = NULL;

/* Exceptions that correspond to IEEE signals */
#define SUBNORMAL 5
#define INEXACT 6
Expand Down Expand Up @@ -5902,10 +5902,10 @@ PyInit__decimal(void)
CHECK_INT(PyModule_AddType(m, state->DecimalTuple));

/* Create top level exception */
ASSIGN_PTR(DecimalException, PyErr_NewException(
ASSIGN_PTR(state->DecimalException, PyErr_NewException(
"decimal.DecimalException",
PyExc_ArithmeticError, NULL));
CHECK_INT(PyModule_AddObject(m, "DecimalException", Py_NewRef(DecimalException)));
CHECK_INT(PyModule_AddType(m, (PyTypeObject *)state->DecimalException));

/* Create signal tuple */
ASSIGN_PTR(SignalTuple, PyTuple_New(SIGNAL_MAP_LEN));
Expand All @@ -5918,10 +5918,11 @@ PyInit__decimal(void)

switch (cm->flag) {
case MPD_Float_operation:
base = PyTuple_Pack(2, DecimalException, PyExc_TypeError);
base = PyTuple_Pack(2, state->DecimalException, PyExc_TypeError);
break;
case MPD_Division_by_zero:
base = PyTuple_Pack(2, DecimalException, PyExc_ZeroDivisionError);
base = PyTuple_Pack(2, state->DecimalException,
PyExc_ZeroDivisionError);
break;
case MPD_Overflow:
base = PyTuple_Pack(2, signal_map[INEXACT].ex,
Expand All @@ -5933,7 +5934,7 @@ PyInit__decimal(void)
signal_map[SUBNORMAL].ex);
break;
default:
base = PyTuple_Pack(1, DecimalException);
base = PyTuple_Pack(1, state->DecimalException);
break;
}

Expand Down
1 change: 0 additions & 1 deletion Tools/c-analyzer/cpython/globals-to-fix.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,6 @@ Modules/xxlimited_35.c - Xxo_Type -
## exception types
Modules/_ctypes/_ctypes.c - PyExc_ArgError -
Modules/_cursesmodule.c - PyCursesError -
Modules/_decimal/_decimal.c - DecimalException -
Modules/_tkinter.c - Tkinter_TclError -
Modules/xxlimited_35.c - ErrorObject -
Modules/xxmodule.c - ErrorObject -
Expand Down

0 comments on commit dbefa88

Please sign in to comment.