I can't convince myself it would solve the general case, though: if both r-> and c->output_filters to happen point to the *same* filter, modifying the filter chain without knowledge of r-> (which is the problem) will still break if the filter must be inserted in the ->prev position?
We'd likely have to switch r->output_filters (and perhaps c->output_filters) to use double-indirection (**) - so that we can change the underlying pointer and update all 'pointers' at the same time. -- justin
