updated for version 7.3.1230
Problem: Python: Exception messages are not clear.
Solution: Make exception messages more verbose. (ZyX)
diff --git a/src/if_python3.c b/src/if_python3.c
index 7155bc1..9bb2a4f 100644
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -122,6 +122,7 @@
# define PyDict_SetItemString py3_PyDict_SetItemString
# define PyErr_BadArgument py3_PyErr_BadArgument
# define PyErr_Clear py3_PyErr_Clear
+# define PyErr_Format py3_PyErr_Format
# define PyErr_PrintEx py3_PyErr_PrintEx
# define PyErr_NoMemory py3_PyErr_NoMemory
# define PyErr_Occurred py3_PyErr_Occurred
@@ -337,6 +338,7 @@
static void* (*py3_PyMem_Malloc)(size_t);
static int (*py3_Py_IsInitialized)(void);
static void (*py3_PyErr_Clear)(void);
+static PyObject* (*py3_PyErr_Format)(PyObject *, const char *, ...);
static void (*py3_PyErr_PrintEx)(int);
static PyObject*(*py3__PyObject_Init)(PyObject *, PyTypeObject *);
static iternextfunc py3__PyObject_NextNotImplemented;
@@ -485,6 +487,7 @@
{"_Py_FalseStruct", (PYTHON_PROC*)&py3__Py_FalseStruct},
{"_Py_TrueStruct", (PYTHON_PROC*)&py3__Py_TrueStruct},
{"PyErr_Clear", (PYTHON_PROC*)&py3_PyErr_Clear},
+ {"PyErr_Format", (PYTHON_PROC*)&py3_PyErr_Format},
{"PyErr_PrintEx", (PYTHON_PROC*)&py3_PyErr_PrintEx},
{"PyObject_Init", (PYTHON_PROC*)&py3__PyObject_Init},
{"PyModule_AddObject", (PYTHON_PROC*)&py3_PyModule_AddObject},
@@ -1169,7 +1172,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return NULL;
}
}
@@ -1203,7 +1206,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return -1;
}
}
@@ -1285,7 +1288,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return NULL;
}
}
@@ -1312,7 +1315,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return -1;
}
}
@@ -1491,7 +1494,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return NULL;
}
}
@@ -1515,7 +1518,7 @@
}
else
{
- PyErr_SET_STRING(PyExc_TypeError, "index must be int or slice");
+ RAISE_INVALID_INDEX_TYPE(idx);
return -1;
}
}