diff --git a/lib/client.js b/lib/client.js index 18ed917f5..ad5a3b5b6 100644 --- a/lib/client.js +++ b/lib/client.js @@ -211,7 +211,9 @@ MatrixClient.prototype.setPowerLevel = function(roomId, userId, powerLevel, users: {} }; if (event && event.getType() === "m.room.power_levels") { - content = event.getContent(); + // take a copy of the content to ensure we don't corrupt + // existing client state with a failed power level change + content = utils.deepCopy(event.getContent()); } content.users[userId] = powerLevel; var path = utils.encodeUri("/rooms/$roomId/state/m.room.power_levels", {