Revision history for Perl extension XML::LibXML
+2.0210 2024-01-24
+ - Fix copying external entity from an ext_ent_handler handler
+ - https://github.com/shlomif/perl-XML-LibXML/issues/81
+ - thanks to Petr
+ - libxml-mm: Fix function prototypes in function pointers
+ - thanks to Khem Raj
+
2.0209 2023-07-15
- t/35huge_mode.t: fix test with libxml2 2.11
- thanks to Dominique Martinet
use IO::Handle; # for FH reads called as methods
BEGIN {
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
$ABI_VERSION = 2;
require Exporter;
use XSLoader ();
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
#include "Av_CharPtrPtr.h" /* XS_*_charPtrPtr() */
#include <fcntl.h>
+#include <limits.h> /* INT_MAX */
#ifndef WIN32
#include <unistd.h>
int count;
SV * results;
STRLEN results_len;
+ int int_results_len;
const char * results_pv;
xmlParserInputBufferPtr input_buf;
results = POPs;
results_pv = SvPV(results, results_len);
- input_buf = xmlParserInputBufferCreateMem(
- results_pv,
- results_len,
- XML_CHAR_ENCODING_NONE
- );
+ int_results_len = results_len;
+ if ((results_len > INT_MAX) || (int_results_len != results_len)) {
+ croak("a buffer would be too big\n");
+ }
+ input_buf = xmlAllocParserInputBuffer(XML_CHAR_ENCODING_NONE);
+ if (!input_buf) {
+ croak("cannot create a buffer!\n");
+ }
+ if (-1 == xmlParserInputBufferPush(input_buf, int_results_len, results_pv)) {
+ xmlFreeParserInputBuffer(input_buf);
+ croak("cannot push an external entity into a buffer!\n");
+ }
PUTBACK;
FREETMPS;
"web" : "https://github.com/shlomif/perl-XML-LibXML"
}
},
- "version" : "2.0209",
+ "version" : "2.0210",
"x_serialization_backend" : "JSON::PP version 4.16"
}
warnings: '0'
resources:
repository: https://github.com/shlomif/perl-XML-LibXML.git
-version: '2.0209'
+version: '2.0210'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
</authorgroup>
- <edition>2.0209</edition>
+ <edition>2.0210</edition>
<copyright>
<year>2001-2007</year>
<holder>AxKit.com Ltd</holder>
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
our @ISA = qw/Tie::Hash/;
use vars qw($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
BEGIN
{
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use overload
'""' => \&value,
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
@ISA = qw(Exporter);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use XML::LibXML qw(:libxml);
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use XML::LibXML;
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use 5.008_000;
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use warnings;
use vars qw($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use constant ERR_OK => 0;
use constant ERR_INTERNAL_ERROR => 1;
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
fallback => 1;
$WARNINGS = 0; # 0: suppress, 1: report via warn, 2: report via die
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use constant XML_ERR_NONE => 0;
use constant XML_ERR_WARNING => 1; # A simple warning
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use warnings;
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use overload
'""' => \&value,
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use XML::LibXML::Number;
use vars qw($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use overload
'""' => \&to_literal,
use warnings;
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use overload
'""' => \&value,
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use warnings;
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use 5.008_000;
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use vars qw($VERSION @ISA);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
use XML::LibXML;
use XML::SAX::Base;
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
return $XML::LibXML::__threads_shared ? 0 : 1;
}
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
sub new {
my $class = shift;
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use XML::LibXML;
use vars qw ($VERSION);
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
sub CLONE_SKIP {
return $XML::LibXML::__threads_shared ? 0 : 1;
use XML::SAX::Base;
use XML::SAX::DocumentLocator;
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
@ISA = ('XML::SAX::Base');
sub CLONE_SKIP {
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
use XML::LibXML;
use XML::LibXML::NodeList;
-$VERSION = "2.0209"; # VERSION TEMPLATE: DO NOT CHANGE
+$VERSION = "2.0210"; # VERSION TEMPLATE: DO NOT CHANGE
# should LibXML XPath data types be used for simple objects
# when passing parameters to extension functions (default: no)
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
=head1 VERSION
-2.0209
+2.0210
=head1 COPYRIGHT
extern SV* PROXY_NODE_REGISTRY_MUTEX;
/* Utility method used by PmmDumpRegistry */
-void PmmRegistryDumpHashScanner(void * payload, void * data, xmlChar * name)
+void PmmRegistryDumpHashScanner(void * payload, void * data, const xmlChar * name)
{
LocalProxyNodePtr lp = (LocalProxyNodePtr) payload;
ProxyNodePtr node = (ProxyNodePtr) lp->proxy;
/* PP: originally this was static inline void, but on AIX the compiler
did not chew it, so I'm removing the inline */
static void
-PmmRegistryHashDeallocator(void *payload, xmlChar *name)
+PmmRegistryHashDeallocator(void *payload, const xmlChar *name)
{
Safefree((LocalProxyNodePtr) payload);
}
* internal, used by PmmCloneProxyNodes
*/
void *
-PmmRegistryHashCopier(void *payload, xmlChar *name)
+PmmRegistryHashCopier(void *payload, const xmlChar *name)
{
ProxyNodePtr proxy = ((LocalProxyNodePtr) payload)->proxy;
LocalProxyNodePtr lp;