diff options
| author | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-11-09 19:43:58 +0000 |
|---|---|---|
| committer | michael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-11-09 19:43:58 +0000 |
| commit | c88b0f7745b18fa2620720d4ea5eef88eff82055 (patch) | |
| tree | 9e23045e611222cc2c9478d93376931887d1286b /packages/fcl-xml | |
| parent | c372b26e724fbe763c7aedd8c9c194db13353381 (diff) | |
| download | fpc-c88b0f7745b18fa2620720d4ea5eef88eff82055.tar.gz | |
* Applied correct patch from bugs 37295
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@47366 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-xml')
| -rw-r--r-- | packages/fcl-xml/src/sax_xml.pp | 53 |
1 files changed, 16 insertions, 37 deletions
diff --git a/packages/fcl-xml/src/sax_xml.pp b/packages/fcl-xml/src/sax_xml.pp index 29ddff1be2..de7bf0b5df 100644 --- a/packages/fcl-xml/src/sax_xml.pp +++ b/packages/fcl-xml/src/sax_xml.pp @@ -175,17 +175,6 @@ begin '<': begin Inc(BufferPos); - if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='[') then - begin - Inc(BufferPos, 8); - EnterNewScannerContext(scCData); - end - else if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='-') then - begin - Inc(BufferPos, 3); - EnterNewScannerContext(scComment); - end - else EnterNewScannerContext(scTag); end; else @@ -206,17 +195,6 @@ begin '<': begin Inc(BufferPos); - if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='[') then - begin - Inc(BufferPos, 8); - EnterNewScannerContext(scCData); - end - else if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='-') then - begin - Inc(BufferPos, 3); - EnterNewScannerContext(scComment); - end - else EnterNewScannerContext(scTag); end; else @@ -232,17 +210,6 @@ begin '<': begin Inc(BufferPos); - if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='[') then - begin - Inc(BufferPos, 8); - EnterNewScannerContext(scCData); - end - else if (Buffer[BufferPos]='!') and (Buffer[BufferPos + 1]='-') then - begin - Inc(BufferPos, 3); - EnterNewScannerContext(scComment); - end - else EnterNewScannerContext(scTag); end; else @@ -252,9 +219,15 @@ begin end; end; scCData: - if (Buffer[BufferPos] = ']') and (Buffer[BufferPos + 1]=']') and (Buffer[BufferPos + 2]='>') then + if (Length(FRawTokenText) = 0) and (Buffer[BufferPos] = '-') then + begin + Inc(BufferPos); + EnterNewScannerContext(scComment); + end + else if (Buffer[BufferPos] = '>') and (RightStr(FRawTokenText, 2) = ']]') then begin - Inc(BufferPos, 3); + FRawTokenText := Copy(FRawTokenText, 8, Length(FRawTokenText)-9); //delete '[CDATA[' and ']]' from text + Inc(BufferPos); EnterNewScannerContext(scUnknown); end else @@ -263,9 +236,10 @@ begin Inc(BufferPos); end; scComment: - if (Buffer[BufferPos] = '-') and (Buffer[BufferPos + 1]='-') and (Buffer[BufferPos + 2]='>') then + if (Buffer[BufferPos] = '>') and (RightStr(FRawTokenText, 2) = '--') then begin - Inc(BufferPos, 3); + FRawTokenText := Copy(FRawTokenText, 2, Length(FRawTokenText)-3); //delete '-' and '--' from text + Inc(BufferPos); EnterNewScannerContext(scUnknown); end else @@ -309,6 +283,11 @@ begin FRawTokenText := FRawTokenText + Buffer[BufferPos]; Inc(BufferPos); end; + '!': + begin + Inc(BufferPos); + EnterNewScannerContext(scCData); + end; '>': begin Inc(BufferPos); |
