From 2f844467a90da639e8bc645844749754ee8f2168 Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 19 Jul 2022 20:55:25 +0000 Subject: [PATCH] fpspreadsheet: Fix memory leak in ODS reader. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8352 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../source/common/fpsopendocument.pas | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/components/fpspreadsheet/source/common/fpsopendocument.pas b/components/fpspreadsheet/source/common/fpsopendocument.pas index 16e59a6cb..64e5100aa 100644 --- a/components/fpspreadsheet/source/common/fpsopendocument.pas +++ b/components/fpspreadsheet/source/common/fpsopendocument.pas @@ -2902,7 +2902,11 @@ begin if UnzipToStream(AStream, 'meta.xml', XMLStream) then begin ReadXMLStream(Doc, XMLStream); - ReadMetaData(Doc.DocumentElement.FindNode('office:meta')); + try + ReadMetaData(Doc.DocumentElement.FindNode('office:meta')); + finally + FreeAndNil(Doc); + end; end; finally XMLStream.Free; @@ -2914,8 +2918,12 @@ begin if UnzipToStream(AStream, 'settings.xml', XMLStream) then begin ReadXMLStream(Doc, XMLStream); - OfficeSettingsNode := Doc.DocumentElement.FindNode('office:settings'); - ReadSettings(OfficeSettingsNode); + try + OfficeSettingsNode := Doc.DocumentElement.FindNode('office:settings'); + ReadSettings(OfficeSettingsNode); + finally + FreeAndNil(Doc); + end; end; finally XMLStream.Free;