- if ( rs->sr_flags & REP_ENTRY_MUSTRELEASE ) {
- /* ITS#6423: REP_ENTRY_MUSTRELEASE incompatible
- * with REP_ENTRY_MODIFIABLE */
- if ( rs->sr_entry == e ) {
- rc = 1;
- goto fail;
+ if ( e != rs->sr_entry ) {
+ /* Reimplementing rs_replace_entry(), I suppose to
+ * bypass our own dubious rwm_entry_release_rw() */
+ if ( rs->sr_flags & REP_ENTRY_MUSTRELEASE ) {
+ rs->sr_flags ^= REP_ENTRY_MUSTRELEASE;
+ op->o_bd->bd_info = (BackendInfo *)on->on_info;
+ be_entry_release_r( op, rs->sr_entry );
+ op->o_bd->bd_info = (BackendInfo *)on;
+ } else if ( rs->sr_flags & REP_ENTRY_MUSTBEFREED ) {
+ entry_free( rs->sr_entry );