From 92b47665f045e2715eb2e701a64c726a2744ed33 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 12 Jul 2026 20:59:44 +0000 Subject: [PATCH] fix: Base64QRCode chama base SetQRCodeData e dispoem o renderizador interno MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve comentários do Devin Review: o Base64QRCode delegava a definição de dados apenas para o QRCode interno, sem atualizar o QrCodeData herdado, e não dispoem o renderizador interno no Dispose. Co-Authored-By: Afonso Dutra Nogueira Filho --- .../Renderers/Base64QRCodeTests.cs | 28 +++++++++++++++++++ QRCoder.Core/Renderers/Base64QRCode.cs | 16 +++++++++++ 2 files changed, 44 insertions(+) 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. ///