It's just bad to de-couple state and NULL ptrs. diff -Nur audacious-plugins-2.4-alpha1-orig/src/neon/neon.c audacious-plugins-2.4-alpha1/src/neon/neon.c --- audacious-plugins-2.4-alpha1-orig/src/neon/neon.c 2010-06-08 16:00:01.000000000 +0200 +++ audacious-plugins-2.4-alpha1/src/neon/neon.c 2010-06-11 20:07:22.000000000 +0200 @@ -702,11 +702,13 @@ return 0; } else if (-1 == ret) { ne_session_destroy(handle->session); + handle->session = NULL; return -1; } _DEBUG("<%p> Following redirect...", handle); ne_session_destroy(handle->session); + handle->session = NULL; } /* @@ -878,7 +880,9 @@ } _DEBUG("<%p> Destroying session", h); - ne_session_destroy(h->session); + if (NULL != h->session) { + ne_session_destroy(h->session); + } handle_free(h); @@ -1270,7 +1274,10 @@ if (NULL != h->request) { ne_request_destroy(h->request); } - ne_session_destroy(h->session); + if (NULL != h->session) { + ne_session_destroy(h->session); + h->session = NULL; + } reset_rb(&h->rb); if (0 != open_handle(h, newpos)) {