]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
* set_new() doesn't need to zero the structure a second time after tp_alloc
authorRaymond Hettinger <python@rcn.com>
Sat, 6 Aug 2005 18:31:24 +0000 (18:31 +0000)
committerRaymond Hettinger <python@rcn.com>
Sat, 6 Aug 2005 18:31:24 +0000 (18:31 +0000)
  has already done the job.
* Use a macro form of PyErr_Occurred() inside the set_lookkey() function.

Include/pyerrors.h
Objects/setobject.c

index f18e5790026992aaafa73efcd2d1a67fb2af8c55..94a52903de07bcbc0ccfad7bec8fe7e5f3450c35 100644 (file)
@@ -15,6 +15,12 @@ PyAPI_FUNC(void) PyErr_Clear(void);
 PyAPI_FUNC(void) PyErr_Fetch(PyObject **, PyObject **, PyObject **);
 PyAPI_FUNC(void) PyErr_Restore(PyObject *, PyObject *, PyObject *);
 
+#ifdef Py_DEBUG
+#define _PyErr_OCCURRED() PyErr_Occurred()
+#else
+#define _PyErr_OCCURRED() (_PyThreadState_Current->curexc_type)
+#endif
+
 /* Error testing and normalization */
 PyAPI_FUNC(int) PyErr_GivenExceptionMatches(PyObject *, PyObject *);
 PyAPI_FUNC(int) PyErr_ExceptionMatches(PyObject *);
index 9952ec0487bc65ff26952a9c9f686e2fb5d39920..c46df83b2096bc455637d23020b38a8ea00729ef 100644 (file)
@@ -66,7 +66,7 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash)
                if (entry->hash == hash) {
                        /* error can't have been checked yet */
                        checked_error = 1;
-                       if (PyErr_Occurred()) {
+                       if (_PyErr_OCCURRED()) {
                                restore_error = 1;
                                PyErr_Fetch(&err_type, &err_value, &err_tb);
                        }
@@ -104,7 +104,7 @@ set_lookkey(PySetObject *so, PyObject *key, register long hash)
                if (entry->hash == hash && entry->key != dummy) {
                        if (!checked_error) {
                                checked_error = 1;
-                               if (PyErr_Occurred()) {
+                               if (_PyErr_OCCURRED()) {
                                        restore_error = 1;
                                        PyErr_Fetch(&err_type, &err_value,
                                                    &err_tb);
@@ -720,7 +720,10 @@ make_new_set(PyTypeObject *type, PyObject *iterable)
        if (so == NULL)
                return NULL;
 
-       EMPTY_TO_MINSIZE(so);
+       /* tp_alloc has already zeroed the structure */
+       assert(so->table == NULL && so->fill == 0 && so->used == 0);
+       so->table = so->smalltable;
+       so->mask = PySet_MINSIZE - 1;
        so->lookup = set_lookkey_string;
        so->hash = -1;
        so->weakreflist = NULL;