diff --git a/linkcheck/HtmlParser/htmlparse.c b/linkcheck/HtmlParser/htmlparse.c index 5200dae3..bda2659b 100644 --- a/linkcheck/HtmlParser/htmlparse.c +++ b/linkcheck/HtmlParser/htmlparse.c @@ -2125,8 +2125,7 @@ static int parser_traverse (parser_object* self, visitproc visit, void* arg) { /* clear all used subobjects participating in reference cycles */ static int parser_clear (parser_object* self) { self->userData->handler = NULL; - Py_XDECREF(self->handler); - self->handler = NULL; + Py_CLEAR(self->handler); return 0; } @@ -2136,10 +2135,8 @@ static void parser_dealloc (parser_object* self) { htmllexDestroy(self->scanner); parser_clear(self); self->userData->parser = NULL; - Py_XDECREF(self->encoding); - self->encoding = NULL; - Py_XDECREF(self->doctype); - self->doctype = NULL; + Py_CLEAR(self->encoding); + Py_CLEAR(self->doctype); PyMem_Del(self->userData->buf); PyMem_Del(self->userData->tmp_buf); PyMem_Del(self->userData); @@ -2188,12 +2185,10 @@ static PyObject* parser_flush (parser_object* self, PyObject* args) { } /* reset parser variables */ CLEAR_BUF(self->userData->tmp_buf); - Py_XDECREF(self->userData->tmp_tag); - Py_XDECREF(self->userData->tmp_attrs); - Py_XDECREF(self->userData->tmp_attrval); - Py_XDECREF(self->userData->tmp_attrname); - self->userData->tmp_tag = self->userData->tmp_attrs = - self->userData->tmp_attrval = self->userData->tmp_attrname = NULL; + Py_CLEAR(self->userData->tmp_tag); + Py_CLEAR(self->userData->tmp_attrs); + Py_CLEAR(self->userData->tmp_attrval); + Py_CLEAR(self->userData->tmp_attrname); self->userData->bufpos = 0; if (strlen(self->userData->buf)) { /* XXX set line, col */ diff --git a/linkcheck/HtmlParser/htmlparse.y b/linkcheck/HtmlParser/htmlparse.y index cf0d2432..393f5fcc 100644 --- a/linkcheck/HtmlParser/htmlparse.y +++ b/linkcheck/HtmlParser/htmlparse.y @@ -564,8 +564,7 @@ static int parser_traverse (parser_object* self, visitproc visit, void* arg) { /* clear all used subobjects participating in reference cycles */ static int parser_clear (parser_object* self) { self->userData->handler = NULL; - Py_XDECREF(self->handler); - self->handler = NULL; + Py_CLEAR(self->handler); return 0; } @@ -575,10 +574,8 @@ static void parser_dealloc (parser_object* self) { htmllexDestroy(self->scanner); parser_clear(self); self->userData->parser = NULL; - Py_XDECREF(self->encoding); - self->encoding = NULL; - Py_XDECREF(self->doctype); - self->doctype = NULL; + Py_CLEAR(self->encoding); + Py_CLEAR(self->doctype); PyMem_Del(self->userData->buf); PyMem_Del(self->userData->tmp_buf); PyMem_Del(self->userData); @@ -627,12 +624,10 @@ static PyObject* parser_flush (parser_object* self, PyObject* args) { } /* reset parser variables */ CLEAR_BUF(self->userData->tmp_buf); - Py_XDECREF(self->userData->tmp_tag); - Py_XDECREF(self->userData->tmp_attrs); - Py_XDECREF(self->userData->tmp_attrval); - Py_XDECREF(self->userData->tmp_attrname); - self->userData->tmp_tag = self->userData->tmp_attrs = - self->userData->tmp_attrval = self->userData->tmp_attrname = NULL; + Py_CLEAR(self->userData->tmp_tag); + Py_CLEAR(self->userData->tmp_attrs); + Py_CLEAR(self->userData->tmp_attrval); + Py_CLEAR(self->userData->tmp_attrname); self->userData->bufpos = 0; if (strlen(self->userData->buf)) { /* XXX set line, col */