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)) {