svtools/source/svhtml/parhtml.cxx                       |    6 +++++-
 sw/source/core/doc/DocumentContentOperationsManager.cxx |    6 ++----
 2 files changed, 7 insertions(+), 5 deletions(-)

New commits:
commit a7116b890ccd6dd1721413b4de6591a8057668ef
Author:     Michael Stahl <michael.st...@allotropia.de>
AuthorDate: Tue Nov 16 14:28:15 2021 +0100
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Tue Nov 16 17:49:12 2021 +0100

    ofz#40766 svtools, sw: HTMLParser: really stop inserting control chars
    
    35d248cab1f0d4800f72abb5cb6afb56f40d9083 forgot to fix one place where
    control characters were in a presumed XML declaration.
    
    Another place looks missing where comments are handled, but it's not
    clear if these can be passed on to Writer.
    
    Revert the previous fix from commit
    b3325ef8cdfc2c82eec34e747106f75a9fccb7e4.
    
    Change-Id: I11ad13de9122533626e512ce0384051e3e5bd97f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125306
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

diff --git a/svtools/source/svhtml/parhtml.cxx 
b/svtools/source/svhtml/parhtml.cxx
index d9f64c4541d9..e38afaa8ec2b 100644
--- a/svtools/source/svhtml/parhtml.cxx
+++ b/svtools/source/svhtml/parhtml.cxx
@@ -1058,6 +1058,7 @@ HtmlTokenId HTMLParser::GetNextToken_()
                         sTmpBuffer.appendUtf32( nNextCh );
                         nNextCh = GetNextChar();
                     } while( '>' != nNextCh && '/' != nNextCh && 
!rtl::isAsciiWhiteSpace( nNextCh ) &&
+                            !linguistic::IsControlChar(nNextCh) &&
                              IsParserWorking() && !rInput.eof() );
 
                     if( !sTmpBuffer.isEmpty() )
@@ -1135,8 +1136,11 @@ HtmlTokenId HTMLParser::GetNextToken_()
                                 if( !bDone )
                                     sTmpBuffer.appendUtf32(nNextCh);
                             }
-                            else
+                            else if (!linguistic::IsControlChar(nNextCh)
+                                || nNextCh == '\r' || nNextCh == '\n' || 
nNextCh == '\t')
+                            {
                                 sTmpBuffer.appendUtf32(nNextCh);
+                            }
                             if( !bDone )
                                 nNextCh = GetNextChar();
                         }
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx 
b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 0b2b7b8647f6..7948768e4352 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -559,10 +559,8 @@ namespace sw
                         }
                         case CH_TXT_ATR_FIELDSTART:
                         {
-                            if (auto const pFieldMark = 
rIDMA.getFieldmarkAt(SwPosition(rTextNode, i)))
-                                startedFields.emplace(pFieldMark, false, 0, 0);
-                            else
-                                SAL_WARN("sw.core", "CH_TXT_ATR_FIELDSTART 
field mark missing");
+                            auto const 
pFieldMark(rIDMA.getFieldmarkAt(SwPosition(rTextNode, i)));
+                            startedFields.emplace(pFieldMark, false, 0, 0);
                             break;
                         }
                         case CH_TXT_ATR_FIELDSEP:

Reply via email to