diff --git a/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs b/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs
index f83f431..580061d 100644
--- a/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs
+++ b/QRCoder.Core.Tests/Renderers/Base64QRCodeTests.cs
@@ -67,5 +67,33 @@ public void can_instantiate_parameterless()
var b64Qr = new Base64QRCode();
b64Qr.ShouldNotBeNull();
}
+
+ [Fact]
+ public void can_set_data_and_dispose()
+ {
+ // Arrange
+ using (var gen = new QRCodeGenerator())
+ using (var data = gen.CreateQrCode("SetQRCodeData test", QRCodeGenerator.ECCLevel.M))
+ using (var b64Qr = new Base64QRCode())
+ {
+ // Act
+ b64Qr.SetQRCodeData(data);
+ var base64 = b64Qr.GetGraphic(10);
+
+ // Assert
+ base64.ShouldNotBeNullOrEmpty();
+ Convert.FromBase64String(base64).Length.ShouldBeGreaterThan(0);
+ }
+ }
+
+ [Fact]
+ public void parameterless_dispose_does_not_throw()
+ {
+ // Arrange
+ var b64Qr = new Base64QRCode();
+
+ // Act & Assert
+ Should.NotThrow(() => b64Qr.Dispose());
+ }
}
}
diff --git a/QRCoder.Core/Renderers/Base64QRCode.cs b/QRCoder.Core/Renderers/Base64QRCode.cs
index e5ed419..a5134fb 100644
--- a/QRCoder.Core/Renderers/Base64QRCode.cs
+++ b/QRCoder.Core/Renderers/Base64QRCode.cs
@@ -89,9 +89,25 @@ public Base64QRCode(QRCodeData data) : base(data)
/// The data.
public override void SetQRCodeData(QRCodeData data)
{
+ base.SetQRCodeData(data);
this.qr.SetQRCodeData(data);
}
+ ///
+ /// Releases the unmanaged resources and optionally releases the managed resources.
+ ///
+ /// true to release both managed and unmanaged resources; false to release only unmanaged resources.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing)
+ {
+ this.qr?.Dispose();
+ this.QrCodeData = null;
+ }
+
+ base.Dispose(disposing);
+ }
+
///
/// Returns the graphic representation of the QR code.
///