- if (rw->ltrw_readers[i] == self) {
- for (j=i; j<rw->ltrw_r_active-1; j++)
- rw->ltrw_readers[j] = rw->ltrw_readers[j+1];
- rw->ltrw_readers[j] = 0;
- break;
+ ldap_pvt_thread_t self = ldap_pvt_thread_self();
+ int i, j;
+ for( i = j = rw->ltrw_r_active; i >= 0; i--) {
+ if (rw->ltrw_readers[i] == self) {
+ rw->ltrw_readers[i] = rw->ltrw_readers[j];
+ rw->ltrw_readers[j] = 0;
+ break;
+ }