[Libreoffice-commits] core.git: sc/source

Tomofumi Yagi (via logerrit) logerrit at kemper.freedesktop.org
Sun Oct 4 11:24:18 UTC 2020


 sc/source/ui/dbgui/scuiasciiopt.cxx |   41 +++++++++++++++++++-----------------
 1 file changed, 22 insertions(+), 19 deletions(-)

New commits:
commit 2a338d521618333a0630a31b46fd0fc9decbe0e5
Author:     Tomofumi Yagi <yagitmknada at gmail.com>
AuthorDate: Sat Oct 3 19:16:43 2020 +0900
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Sun Oct 4 13:23:34 2020 +0200

    sc: ucsdet_detect may return nullptr
    
    ucsdet_detect function needs a NULL checking of the return value.
    
    "a UCharsetMatch representing the best matching charset, or NULL if no charset
    matches the byte data."
    
    Change-Id: I7e9a4b03ffd3c5e3f4953c2c7964dc67a53c39b5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103890
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx
index bfc154bffc08..be524ab15437 100644
--- a/sc/source/ui/dbgui/scuiasciiopt.cxx
+++ b/sc/source/ui/dbgui/scuiasciiopt.cxx
@@ -394,28 +394,31 @@ ScImportAsciiDlg::ScImportAsciiDlg(weld::Window* pParent, const OUString& aDatNa
             UErrorCode uerr = U_ZERO_ERROR;
             UCharsetDetector* ucd = ucsdet_open( &uerr );
             ucsdet_setText( ucd, reinterpret_cast<const char*>(bytes), nRead, &uerr );
-            const UCharsetMatch* match = ucsdet_detect( ucd, &uerr );
-            const char* pEncodingName = ucsdet_getName( match, &uerr );
 
-            if ( U_SUCCESS(uerr) && !strcmp("UTF-8", pEncodingName) )
+            if ( const UCharsetMatch* match = ucsdet_detect(ucd, &uerr) )
             {
-                ePreselectUnicode = RTL_TEXTENCODING_UTF8; // UTF-8
-                mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UTF8 );
+                const char* pEncodingName = ucsdet_getName( match, &uerr );
+
+                if ( U_SUCCESS(uerr) && !strcmp("UTF-8", pEncodingName) )
+                {
+                    ePreselectUnicode = RTL_TEXTENCODING_UTF8; // UTF-8
+                    mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UTF8 );
+                }
+                else if ( U_SUCCESS(uerr) && !strcmp("UTF-16LE", pEncodingName) )
+                {
+                    ePreselectUnicode = RTL_TEXTENCODING_UNICODE; // UTF-16LE
+                    mpDatStream->SetEndian( SvStreamEndian::LITTLE );
+                    mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UNICODE );
+                }
+                else if ( U_SUCCESS(uerr) && !strcmp("UTF-16BE", pEncodingName) )
+                {
+                    ePreselectUnicode = RTL_TEXTENCODING_UNICODE; // UTF-16BE
+                    mpDatStream->SetEndian( SvStreamEndian::BIG );
+                    mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UNICODE );
+                }
+                else // other
+                    mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_DONTKNOW );
             }
-            else if ( U_SUCCESS(uerr) && !strcmp("UTF-16LE", pEncodingName) )
-            {
-                ePreselectUnicode = RTL_TEXTENCODING_UNICODE; // UTF-16LE
-                mpDatStream->SetEndian( SvStreamEndian::LITTLE );
-                mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UNICODE );
-            }
-            else if ( U_SUCCESS(uerr) && !strcmp("UTF-16BE", pEncodingName) )
-            {
-                ePreselectUnicode = RTL_TEXTENCODING_UNICODE; // UTF-16BE
-                mpDatStream->SetEndian(SvStreamEndian::BIG);
-                mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_UNICODE );
-            }
-            else // other
-                mpDatStream->StartReadingUnicodeText( RTL_TEXTENCODING_DONTKNOW );
 
             ucsdet_close( ucd );
         }


More information about the Libreoffice-commits mailing list