summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2010-12-13 08:28:22 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2010-12-13 08:28:22 +0000
commitf919b689ba56d97c466472826854f5eb4d0ec35e (patch)
treecb32206022bb1d77c892a6544bf87c5403c5d971 /content
parenta5221248c2f229264ab9f20fb7249d57def3f156 (diff)
downloadnetsurf-f919b689ba56d97c466472826854f5eb4d0ec35e.tar.gz
netsurf-f919b689ba56d97c466472826854f5eb4d0ec35e.tar.bz2
Take 2: make callers of llcache_object_user_destroy invalidate next/prev pointers
svn path=/trunk/netsurf/; revision=11050
Diffstat (limited to 'content')
-rw-r--r--content/llcache.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/content/llcache.c b/content/llcache.c
index 21dcd9f38..bfd128ba0 100644
--- a/content/llcache.c
+++ b/content/llcache.c
@@ -377,10 +377,12 @@ nserror llcache_handle_release(llcache_handle *handle)
error = llcache_object_remove_user(object, user);
if (error == NSERROR_OK) {
/* Can't delete user object if it's the target of an iterator */
- if (user->iterator_target)
+ if (user->iterator_target) {
user->queued_for_delete = true;
- else
+ } else {
+ user->next = user->prev = NULL;
error = llcache_object_user_destroy(user);
+ }
}
return error;
@@ -1375,6 +1377,7 @@ nserror llcache_object_notify_users(llcache_object *object)
if (user->queued_for_delete) {
next_user = user->next;
+ user->next = user->prev = NULL;
llcache_object_user_destroy(user);
continue;
}
@@ -1410,6 +1413,7 @@ nserror llcache_object_notify_users(llcache_object *object)
if (user->queued_for_delete) {
next_user = user->next;
+ user->next = user->prev = NULL;
llcache_object_user_destroy(user);
continue;
}
@@ -1431,6 +1435,7 @@ nserror llcache_object_notify_users(llcache_object *object)
if (user->queued_for_delete) {
next_user = user->next;
+ user->next = user->prev = NULL;
llcache_object_user_destroy(user);
continue;
}