mirror of
https://github.com/atom/atom.git
synced 2026-01-23 05:48:10 -05:00
Merge pull request #7294 from aki77/fix/leak
DisplayBuffer::decorateMarker leak subscriptions
This commit is contained in:
@@ -1229,6 +1229,11 @@ describe "DisplayBuffer", ->
|
||||
decoration.destroy()
|
||||
expect(displayBuffer.decorationForId(decoration.id)).not.toBeDefined()
|
||||
|
||||
it "does not leak disposables", ->
|
||||
disposablesSize = displayBuffer.disposables.disposables.size
|
||||
decoration.destroy()
|
||||
expect(displayBuffer.disposables.disposables.size).toBe(disposablesSize - 1)
|
||||
|
||||
describe "when a decoration is updated via Decoration::update()", ->
|
||||
it "emits an 'updated' event containing the new and old params", ->
|
||||
decoration.onDidChangeProperties updatedSpy = jasmine.createSpy()
|
||||
|
||||
@@ -974,7 +974,10 @@ class DisplayBuffer extends Model
|
||||
decorateMarker: (marker, decorationParams) ->
|
||||
marker = @getMarker(marker.id)
|
||||
decoration = new Decoration(marker, this, decorationParams)
|
||||
@disposables.add decoration.onDidDestroy => @removeDecoration(decoration)
|
||||
decorationDestroyedDisposable = decoration.onDidDestroy =>
|
||||
@removeDecoration(decoration)
|
||||
@disposables.remove(decorationDestroyedDisposable)
|
||||
@disposables.add(decorationDestroyedDisposable)
|
||||
@decorationsByMarkerId[marker.id] ?= []
|
||||
@decorationsByMarkerId[marker.id].push(decoration)
|
||||
@overlayDecorationsById[decoration.id] = decoration if decoration.isType('overlay')
|
||||
|
||||
Reference in New Issue
Block a user