diff --git a/spec/app/text-buffer-spec.coffee b/spec/app/text-buffer-spec.coffee index 7a23e9326..cb5395933 100644 --- a/spec/app/text-buffer-spec.coffee +++ b/spec/app/text-buffer-spec.coffee @@ -1265,3 +1265,9 @@ describe 'Buffer', -> expect(serializedState.path).toBeUndefined() expect(buffer.getPath()).toBeUndefined() expect(buffer.getText()).toBe("abc") + + it "never deserializes two separate instances of the same buffer", -> + serializedState = buffer.serialize() + buffer.release() + buffer = Buffer.deserialize(serializedState) + expect(Buffer.deserialize(serializedState)).toBe buffer diff --git a/src/app/project.coffee b/src/app/project.coffee index 2e4d718ac..81bf19c76 100644 --- a/src/app/project.coffee +++ b/src/app/project.coffee @@ -127,19 +127,17 @@ class Project else @on 'buffer-created', (buffer) -> callback(buffer) - bufferForPath: (filePath) -> + bufferForPath: (filePath, text) -> if filePath? filePath = @resolve(filePath) if filePath buffer = _.find @buffers, (buffer) -> buffer.getPath() == filePath - buffer or @buildBuffer(filePath) - else - + buffer or @buildBuffer(filePath, text) else - @buildBuffer() + @buildBuffer(null, text) - buildBuffer: (filePath) -> - buffer = new Buffer(filePath) + buildBuffer: (filePath, text) -> + buffer = new Buffer(filePath, text) @buffers.push buffer @trigger 'buffer-created', buffer buffer diff --git a/src/app/text-buffer.coffee b/src/app/text-buffer.coffee index ab49c47e1..3ebfda88e 100644 --- a/src/app/text-buffer.coffee +++ b/src/app/text-buffer.coffee @@ -25,11 +25,8 @@ class Buffer invalidMarkers: null refcount: 0 - @deserialize: (state) -> - if state && (state.path? || state.text?) - new Buffer(state.path, state.text) - else - new Buffer(null) + @deserialize: ({path, text}) -> + project.bufferForPath(path, text) constructor: (path, initialText) -> @id = @constructor.idCounter++