Index: trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java
===================================================================
--- trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 2610)
+++ trunk/src/org/openstreetmap/josm/command/ChangeRelationMemberRoleCommand.java	(revision 2611)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.gui.DefaultNameFormatter;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -49,5 +50,5 @@
 
         oldRole = relation.getMember(position).getRole();
-        relation.getMember(position).getRole().equals(newRole);
+        relation.setMember(position, new RelationMember(newRole, relation.getMember(position).getMember()));
 
         oldModified = relation.isModified();
Index: trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java
===================================================================
--- trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 2610)
+++ trunk/src/org/openstreetmap/josm/corrector/ReverseWayTagCorrector.java	(revision 2611)
@@ -12,5 +12,4 @@
 import java.util.regex.Pattern;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.command.Command;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
@@ -142,5 +141,10 @@
         roleCorrectionMap.put(way, new ArrayList<RoleCorrection>());
 
-        for (Relation relation : Main.main.getCurrentDataSet().getRelations()) {
+        Collection<OsmPrimitive> referrers = oldway.getReferrers();
+        for (OsmPrimitive referrer: referrers) {
+            if (! (referrer instanceof Relation)) {
+                continue;
+            }
+            Relation relation = (Relation)referrer;
             int position = 0;
             for (RelationMember member : relation.getMembers()) {
