Commit 223fccf8f for imagemagick.org
commit 223fccf8f8eb542a8bd844ffeb056b3a3840c2c8
Author: Dirk Lemstra <dirk@lemstra.org>
Date: Sun Oct 4 18:14:02 2026 +0200
Moved SubstituteXMLEntities so we don't duplicate the method.
diff --git a/MagickCore/xml-tree-private.h b/MagickCore/xml-tree-private.h
index c8d4843a1..7223a5c0a 100644
--- a/MagickCore/xml-tree-private.h
+++ b/MagickCore/xml-tree-private.h
@@ -28,95 +28,6 @@
extern "C" {
#endif
-static inline char *SubstituteXMLEntities(const char *content,
- const MagickBooleanType pedantic)
-{
- char
- *canonical_content;
-
- const char
- *p;
-
- size_t
- extent;
-
- ssize_t
- i;
-
- /*
- Substitute predefined entities.
- */
- i=0;
- canonical_content=AcquireString((char *) NULL);
- extent=MagickPathExtent;
- for (p=content; *p != '\0'; p++)
- {
- if ((i+MagickPathExtent) > (ssize_t) extent)
- {
- extent+=MagickPathExtent;
- canonical_content=(char *) ResizeQuantumMemory(canonical_content,extent,
- sizeof(*canonical_content));
- if (canonical_content == (char *) NULL)
- return(canonical_content);
- }
- switch (*p)
- {
- case '&':
- {
- i+=FormatLocaleString(canonical_content+i,extent,"&");
- break;
- }
- case '<':
- {
- i+=FormatLocaleString(canonical_content+i,extent,"<");
- break;
- }
- case '>':
- {
- i+=FormatLocaleString(canonical_content+i,extent,">");
- break;
- }
- case '"':
- {
- i+=FormatLocaleString(canonical_content+i,extent,""");
- break;
- }
- case '\n':
- {
- if (pedantic == MagickFalse)
- {
- canonical_content[i++]=(char) (*p);
- break;
- }
- i+=FormatLocaleString(canonical_content+i,extent,"
");
- break;
- }
- case '\t':
- {
- if (pedantic == MagickFalse)
- {
- canonical_content[i++]=(char) (*p);
- break;
- }
- i+=FormatLocaleString(canonical_content+i,extent,"	");
- break;
- }
- case '\r':
- {
- i+=FormatLocaleString(canonical_content+i,extent,"
");
- break;
- }
- default:
- {
- canonical_content[i++]=(char) (*p);
- break;
- }
- }
- }
- canonical_content[i]='\0';
- return(canonical_content);
-}
-
extern MagickPrivate char
*FileToXML(const char *,const size_t);
@@ -126,6 +37,9 @@ extern MagickPrivate MagickBooleanType
extern MagickPrivate void
SkipXMLComment(const char **);
+extern MagickExport char
+ *SubstituteXMLEntities(const char *,const MagickBooleanType);
+
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
diff --git a/MagickCore/xml-tree.c b/MagickCore/xml-tree.c
index 9b01ff6e8..194108d20 100644
--- a/MagickCore/xml-tree.c
+++ b/MagickCore/xml-tree.c
@@ -2202,6 +2202,109 @@ MagickPrivate MagickBooleanType SkipXMLDocType(const char **xml)
% %
% %
% %
+% S u b s t i t u t e X M L E n t i t i e s %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SubstituteXMLEntities() substitutes the predefined XML entities.
+%
+*/
+MagickExport char *SubstituteXMLEntities(const char *content,
+ const MagickBooleanType pedantic)
+{
+ char
+ *canonical_content;
+
+ const char
+ *p;
+
+ size_t
+ extent;
+
+ ssize_t
+ i;
+
+ /*
+ Substitute predefined entities.
+ */
+ i=0;
+ canonical_content=AcquireString((char *) NULL);
+ extent=MagickPathExtent;
+ for (p=content; *p != '\0'; p++)
+ {
+ if ((i+MagickPathExtent) > (ssize_t) extent)
+ {
+ extent+=MagickPathExtent;
+ canonical_content=(char *) ResizeQuantumMemory(canonical_content,extent,
+ sizeof(*canonical_content));
+ if (canonical_content == (char *) NULL)
+ return(canonical_content);
+ }
+ switch (*p)
+ {
+ case '&':
+ {
+ i+=FormatLocaleString(canonical_content+i,extent,"&");
+ break;
+ }
+ case '<':
+ {
+ i+=FormatLocaleString(canonical_content+i,extent,"<");
+ break;
+ }
+ case '>':
+ {
+ i+=FormatLocaleString(canonical_content+i,extent,">");
+ break;
+ }
+ case '"':
+ {
+ i+=FormatLocaleString(canonical_content+i,extent,""");
+ break;
+ }
+ case '\n':
+ {
+ if (pedantic == MagickFalse)
+ {
+ canonical_content[i++]=(char) (*p);
+ break;
+ }
+ i+=FormatLocaleString(canonical_content+i,extent,"
");
+ break;
+ }
+ case '\t':
+ {
+ if (pedantic == MagickFalse)
+ {
+ canonical_content[i++]=(char) (*p);
+ break;
+ }
+ i+=FormatLocaleString(canonical_content+i,extent,"	");
+ break;
+ }
+ case '\r':
+ {
+ i+=FormatLocaleString(canonical_content+i,extent,"
");
+ break;
+ }
+ default:
+ {
+ canonical_content[i++]=(char) (*p);
+ break;
+ }
+ }
+ }
+ canonical_content[i]='\0';
+ return(canonical_content);
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
% X M L T r e e I n f o T o X M L %
% %
% %