File vcdimager-libxml2-2.14.patch of Package vcdimager

diff -Nurp vcdimager-2.0.1/frontends/xml/vcd_xml_common.c vcdimager-2.0.1-libxml214/frontends/xml/vcd_xml_common.c
--- vcdimager-2.0.1/frontends/xml/vcd_xml_common.c	2018-01-03 21:17:37.000000000 +0100
+++ vcdimager-2.0.1-libxml214/frontends/xml/vcd_xml_common.c	2025-04-26 05:22:03.008769534 +0200
@@ -242,17 +242,27 @@ _convert (const char in[], const char en
 
   temp = size - 1;
   if (from) {
-    if (NULL != handler->output)
-      ret = handler->output (out, &out_size, (const unsigned char *) in, &temp);
-    else
+    if (!(handler->flags & 2) && NULL != handler->output.func)
+      ret = handler->output.func (handler->outputCtxt, out, &out_size, (const unsigned char *) in, &temp, 1);
+    if ((handler->flags & 2) && NULL != handler->output.legacyFunc)
+      ret = handler->output.legacyFunc (out, &out_size, (const unsigned char *) in, &temp);
+    else {
+      xmlCharEncCloseFunc(handler);
       return strdup(in);
+    }
   } else {
-    if (NULL != handler->input)
-      ret = handler->input (out, &out_size, (const unsigned char *) in, &temp);
-    else
+    if (!(handler->flags & 2) && NULL != handler->input.func)
+      ret = handler->input.func (handler->inputCtxt, out, &out_size, (const unsigned char *) in, &temp, 1);
+    if ((handler->flags & 2) && NULL != handler->input.legacyFunc)
+      ret = handler->input.legacyFunc (out, &out_size, (const unsigned char *) in, &temp);
+    else {
+      xmlCharEncCloseFunc(handler);
       return strdup(in);
+    }
   }
 
+  xmlCharEncCloseFunc(handler);
+
   if (ret < 0 || (temp - size + 1))
     {
       free (out);

openSUSE Build Service is sponsored by