Use span arithmetic in cfx_xmlparser.cpp.

We can make a span from a vector, and then get an (initial)
bounds-checked pointer from it by applying subspan(). This
avoids a clang-tidy pointer arithmetic warning.

Change-Id: Ife9502ac0124467309c8027c4bfd163b9d11d26a
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/52790
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/xml/cfx_xmlparser.cpp b/core/fxcrt/xml/cfx_xmlparser.cpp
index cba956e..eea684a 100644
--- a/core/fxcrt/xml/cfx_xmlparser.cpp
+++ b/core/fxcrt/xml/cfx_xmlparser.cpp
@@ -335,13 +335,13 @@
           }
           current_buffer_idx++;
           break;
-        case FDE_XmlSyntaxState::SkipCommentOrDecl:
-          if (FXSYS_wcsnicmp(buffer.data() + current_buffer_idx, L"--", 2) ==
-              0) {
+        case FDE_XmlSyntaxState::SkipCommentOrDecl: {
+          auto current_span =
+              pdfium::make_span(buffer).subspan(current_buffer_idx);
+          if (FXSYS_wcsnicmp(current_span.data(), L"--", 2) == 0) {
             current_buffer_idx += 2;
             current_parser_state = FDE_XmlSyntaxState::SkipComment;
-          } else if (FXSYS_wcsnicmp(buffer.data() + current_buffer_idx,
-                                    L"[CDATA[", 7) == 0) {
+          } else if (FXSYS_wcsnicmp(current_span.data(), L"[CDATA[", 7) == 0) {
             current_buffer_idx += 7;
             current_parser_state = FDE_XmlSyntaxState::SkipCData;
           } else {
@@ -350,12 +350,13 @@
             character_to_skip_too_stack.push(L'>');
           }
           break;
+        }
         case FDE_XmlSyntaxState::SkipCData: {
-          if (FXSYS_wcsnicmp(buffer.data() + current_buffer_idx, L"]]>", 3) ==
-              0) {
+          auto current_span =
+              pdfium::make_span(buffer).subspan(current_buffer_idx);
+          if (FXSYS_wcsnicmp(current_span.data(), L"]]>", 3) == 0) {
             current_buffer_idx += 3;
             current_parser_state = FDE_XmlSyntaxState::Text;
-
             current_node_->AppendChild(
                 doc->CreateNode<CFX_XMLCharData>(GetTextData()));
           } else {
@@ -413,15 +414,16 @@
             current_buffer_idx++;
           }
           break;
-        case FDE_XmlSyntaxState::SkipComment:
-          if (FXSYS_wcsnicmp(buffer.data() + current_buffer_idx, L"-->", 3) ==
-              0) {
+        case FDE_XmlSyntaxState::SkipComment: {
+          auto current_span =
+              pdfium::make_span(buffer).subspan(current_buffer_idx);
+          if (FXSYS_wcsnicmp(current_span.data(), L"-->", 3) == 0) {
             current_buffer_idx += 2;
             current_parser_state = FDE_XmlSyntaxState::Text;
           }
-
           current_buffer_idx++;
           break;
+        }
         case FDE_XmlSyntaxState::TargetData:
           if (IsXMLWhiteSpace(ch)) {
             if (current_text_.empty()) {