Skip to content

Commit ef051a2

Browse files
Merge pull request #20 from KristofferStrube/fix/memory-leaks-inc-create-async-methods
Fixed leaking `IJSObjectReference`s in `CreateAsync` methods of `AbortController`, `CustomEvent`, `Event`, and `EventTarget`.
2 parents 065d786 + d462a49 commit ef051a2

4 files changed

Lines changed: 10 additions & 14 deletions

File tree

src/KristofferStrube.Blazor.DOM/Abort/AbortController.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ public static Task<AbortController> CreateAsync(IJSRuntime jSRuntime, IJSObjectR
3333
/// <returns>A wrapper instance for a <see cref="AbortController"/>.</returns>
3434
public static async Task<AbortController> CreateAsync(IJSRuntime jSRuntime)
3535
{
36-
IJSObjectReference helper = await jSRuntime.GetHelperAsync();
36+
await using IJSObjectReference helper = await jSRuntime.GetHelperAsync();
3737
IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("constructAbortController");
38-
AbortController abortController = new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
39-
return abortController;
38+
return new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
4039
}
4140

4241
/// <inheritdoc/>

src/KristofferStrube.Blazor.DOM/Events/CustomEvent.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ public class CustomEvent : Event, IJSCreatable<CustomEvent>
3232
/// <returns>A wrapper instance for a <see cref="CustomEvent"/>.</returns>
3333
public static async Task<CustomEvent> CreateAsync(IJSRuntime jSRuntime, string type, CustomEventInit? eventInitDict = null)
3434
{
35-
IJSObjectReference helper = await jSRuntime.GetHelperAsync();
35+
await using IJSObjectReference helper = await jSRuntime.GetHelperAsync();
3636
IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("constructCustomEvent", type, eventInitDict);
37-
return new CustomEvent(jSRuntime, jSInstance, new() { DisposesJSReference = true });
37+
return new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
3838
}
3939

4040
/// <inheritdoc/>

src/KristofferStrube.Blazor.DOM/Events/Event.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ public static Task<Event> CreateAsync(IJSRuntime jSRuntime, IJSObjectReference j
3232
/// <returns>A wrapper instance for a <see cref="Event"/>.</returns>
3333
public static async Task<Event> CreateAsync(IJSRuntime jSRuntime, string type, EventInit? eventInitDict = null)
3434
{
35-
IJSObjectReference helper = await jSRuntime.GetHelperAsync();
35+
await using IJSObjectReference helper = await jSRuntime.GetHelperAsync();
3636
IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("constructEvent", type, eventInitDict);
37-
Event eventInstance = new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
38-
return eventInstance;
37+
return new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
3938
}
4039

4140
/// <inheritdoc/>

src/KristofferStrube.Blazor.DOM/Events/EventTarget.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,9 @@ public static Task<EventTarget> CreateAsync(IJSRuntime jSRuntime, IJSObjectRefer
3333
/// <returns>A wrapper instance for a <see cref="EventTarget"/>.</returns>
3434
public static async Task<EventTarget> CreateAsync(IJSRuntime jSRuntime, ElementReference element)
3535
{
36-
IJSObjectReference helper = await jSRuntime.GetHelperAsync();
36+
await using IJSObjectReference helper = await jSRuntime.GetHelperAsync();
3737
IJSObjectReference jSReference = await helper.InvokeAsync<IJSObjectReference>("getJSReference", element);
38-
EventTarget eventTarget = new(jSRuntime, jSReference, new() { DisposesJSReference = true });
39-
return eventTarget;
38+
return new(jSRuntime, jSReference, new() { DisposesJSReference = true });
4039
}
4140

4241
/// <summary>
@@ -46,10 +45,9 @@ public static async Task<EventTarget> CreateAsync(IJSRuntime jSRuntime, ElementR
4645
/// <returns>A wrapper instance for a <see cref="EventTarget"/>.</returns>
4746
public static async Task<EventTarget> CreateAsync(IJSRuntime jSRuntime)
4847
{
49-
IJSObjectReference helper = await jSRuntime.GetHelperAsync();
48+
await using IJSObjectReference helper = await jSRuntime.GetHelperAsync();
5049
IJSObjectReference jSInstance = await helper.InvokeAsync<IJSObjectReference>("constructEventTarget");
51-
EventTarget eventTarget = new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
52-
return eventTarget;
50+
return new(jSRuntime, jSInstance, new() { DisposesJSReference = true });
5351
}
5452

5553
/// <inheritdoc/>

0 commit comments

Comments
 (0)