In uncache_tmp_xattrs() the code used to find the value to unlink,
update the single-linked list, and then free the wrong pointer.
This fixes bug #50.
- Fixed the specifying of --bwlimit=0 for the default (unlimited).
+ - Fixed a bug in the xattr code that was freeing the wrong object when trying
+ to cleanup the xattr list.
+
### ENHANCEMENTS:
- Allow `--max-alloc=0` to specify no limit.
continue;
}
- while (ref != NULL) {
- if (ref->next == NULL) {
- ref = NULL;
+ while (1) {
+ rsync_xa_list_ref *next = ref->next;
+ if (next == NULL)
break;
- }
- if (xa_list_item->ndx == ref->next->ndx) {
- ref->next = ref->next->next;
- free(ref);
+ if (xa_list_item->ndx == next->ndx) {
+ ref->next = next->next;
+ free(next);
break;
}
- ref = ref->next;
+ ref = next;
}
}
prior_xattr_count = (size_t)-1;