Remove string.h inclusion from fx_system.h

Then fix IWYU in agg23/.

Change-Id: I836fed70993bd40d4cb9f1822eac9a8b531a1852
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/110010
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/fx_system.h b/core/fxcrt/fx_system.h
index baa2a8a..ca910f8 100644
--- a/core/fxcrt/fx_system.h
+++ b/core/fxcrt/fx_system.h
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <wchar.h>
 
 #include "build/build_config.h"
diff --git a/third_party/agg23/0015-include-string-h.patch b/third_party/agg23/0015-include-string-h.patch
new file mode 100644
index 0000000..dcbec56
--- /dev/null
+++ b/third_party/agg23/0015-include-string-h.patch
@@ -0,0 +1,26 @@
+diff --git a/third_party/agg23/agg_array.h b/third_party/agg23/agg_array.h
+index b82d95296..ed22c40e9 100644
+--- a/third_party/agg23/agg_array.h
++++ b/third_party/agg23/agg_array.h
+@@ -16,6 +16,8 @@
+ #ifndef AGG_ARRAY_INCLUDED
+ #define AGG_ARRAY_INCLUDED
+ 
++#include <string.h>
++
+ #include "agg_basics.h"
+ #include "core/fxcrt/fx_memory.h"  // For FXSYS_* macros.
+ 
+diff --git a/third_party/agg23/agg_path_storage.cpp b/third_party/agg23/agg_path_storage.cpp
+index 2981e9c0c..d4225124d 100644
+--- a/third_party/agg23/agg_path_storage.cpp
++++ b/third_party/agg23/agg_path_storage.cpp
+@@ -25,6 +25,8 @@
+ 
+ #include "agg_path_storage.h"
+ 
++#include <string.h>
++
+ #include "agg_math.h"
+ #include "core/fxcrt/fx_memory.h"
+ 
diff --git a/third_party/agg23/README.pdfium b/third_party/agg23/README.pdfium
index 66aa7ab..b8286cf 100644
--- a/third_party/agg23/README.pdfium
+++ b/third_party/agg23/README.pdfium
@@ -33,3 +33,4 @@
 0013-cxx20.patch: C++20 support.
 0014-ubsan-render-line.patch: Fix some integer overflows in
 outline_aa::render_line().
+0015-include-string-h.patch: IWYU for <string.h>
\ No newline at end of file
diff --git a/third_party/agg23/agg_array.h b/third_party/agg23/agg_array.h
index b82d952..ed22c40 100644
--- a/third_party/agg23/agg_array.h
+++ b/third_party/agg23/agg_array.h
@@ -16,6 +16,8 @@
 #ifndef AGG_ARRAY_INCLUDED
 #define AGG_ARRAY_INCLUDED
 
+#include <string.h>
+
 #include "agg_basics.h"
 #include "core/fxcrt/fx_memory.h"  // For FXSYS_* macros.
 
diff --git a/third_party/agg23/agg_path_storage.cpp b/third_party/agg23/agg_path_storage.cpp
index 2981e9c..d422512 100644
--- a/third_party/agg23/agg_path_storage.cpp
+++ b/third_party/agg23/agg_path_storage.cpp
@@ -25,6 +25,8 @@
 
 #include "agg_path_storage.h"
 
+#include <string.h>
+
 #include "agg_math.h"
 #include "core/fxcrt/fx_memory.h"