vcl/source/gdi/embeddedfontsmanager.cxx |    9 +++++++++
 1 file changed, 9 insertions(+)

New commits:
commit f256bba249ae0e0c2722905db788793044f45228
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Aug 13 00:04:58 2025 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Aug 12 22:47:52 2025 +0200

    Handle errors in File::close()
    
    As Michael mentioned, here may be error writing the data,
    when buffered write is used.
    
    See 
https://gerrit.libreoffice.org/c/core/+/189345/comment/562331df_0e4a6fbd/
    
    Change-Id: Iea1054a32de67f7db3416f4d238b8748c151c466
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189451
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/vcl/source/gdi/embeddedfontsmanager.cxx 
b/vcl/source/gdi/embeddedfontsmanager.cxx
index dd52b20edfad..3a74c6ee4049 100644
--- a/vcl/source/gdi/embeddedfontsmanager.cxx
+++ b/vcl/source/gdi/embeddedfontsmanager.cxx
@@ -149,11 +149,20 @@ bool writeFontBytesToFile(osl::File& file, const void* 
data, sal_uInt64 size)
             case osl::File::E_INTR:
                 break;
             default:
+                SAL_WARN("vcl.fonts", "Writing temporary font file failed");
                 file.close();
                 osl::File::remove(file.getURL());
                 return false;
         }
     }
+    if (file.close() != osl::File::E_None)
+    {
+        // Something failed in delayed writing?
+        SAL_WARN("vcl.fonts", "Writing temporary font file failed");
+        osl::File::remove(file.getURL());
+        return false;
+    }
+
     return true;
 }
 

Reply via email to