38 lines
1.6 KiB
Diff
38 lines
1.6 KiB
Diff
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);
|