libxml-ruby 3.2.2 → 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/HISTORY +16 -0
  3. data/Rakefile +2 -2
  4. data/ext/libxml/extconf.h +3 -0
  5. data/ext/libxml/ruby_libxml.h +0 -22
  6. data/ext/libxml/ruby_xml.c +6 -0
  7. data/ext/libxml/ruby_xml_document.c +6 -0
  8. data/ext/libxml/ruby_xml_encoding.h +2 -0
  9. data/ext/libxml/ruby_xml_error.h +2 -0
  10. data/ext/libxml/ruby_xml_html_parser.c +2 -0
  11. data/ext/libxml/ruby_xml_html_parser_context.c +1 -0
  12. data/ext/libxml/ruby_xml_html_parser_options.c +2 -0
  13. data/ext/libxml/ruby_xml_namespace.c +1 -0
  14. data/ext/libxml/ruby_xml_node.c +12 -4
  15. data/ext/libxml/ruby_xml_parser_context.c +2 -0
  16. data/ext/libxml/ruby_xml_reader.c +3 -0
  17. data/ext/libxml/ruby_xml_reader.h +0 -3
  18. data/ext/libxml/ruby_xml_relaxng.c +2 -0
  19. data/ext/libxml/ruby_xml_relaxng.h +0 -2
  20. data/ext/libxml/ruby_xml_schema.c +223 -81
  21. data/ext/libxml/ruby_xml_schema.h +4 -788
  22. data/ext/libxml/ruby_xml_schema_attribute.c +69 -71
  23. data/ext/libxml/ruby_xml_schema_attribute.h +25 -3
  24. data/ext/libxml/ruby_xml_schema_element.c +28 -54
  25. data/ext/libxml/ruby_xml_schema_element.h +0 -3
  26. data/ext/libxml/ruby_xml_schema_facet.c +19 -21
  27. data/ext/libxml/ruby_xml_schema_facet.h +0 -4
  28. data/ext/libxml/ruby_xml_schema_type.c +56 -37
  29. data/ext/libxml/ruby_xml_version.h +3 -3
  30. data/ext/libxml/ruby_xml_writer.c +4 -0
  31. data/ext/libxml/ruby_xml_writer.h +0 -4
  32. data/ext/libxml/ruby_xml_xinclude.c +4 -0
  33. data/ext/libxml/ruby_xml_xpath.c +1 -0
  34. data/ext/libxml/ruby_xml_xpath.h +2 -0
  35. data/ext/libxml/ruby_xml_xpath_context.c +2 -0
  36. data/ext/libxml/ruby_xml_xpath_object.c +1 -0
  37. data/ext/libxml/ruby_xml_xpointer.c +5 -1
  38. data/lib/libxml-ruby.rb +1 -1
  39. data/test/model/shiporder.rnc +2 -2
  40. data/test/model/shiporder.rng +2 -2
  41. data/test/model/shiporder.xsd +7 -3
  42. data/test/model/shiporder_bad.xsd +40 -0
  43. data/test/model/shiporder_import.xsd +45 -0
  44. data/test/test_helper.rb +4 -0
  45. data/test/test_schema.rb +92 -29
  46. data/test/test_xml.rb +15 -3
  47. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40cfe66ffd84495bc2bd079978d06abd01be932513d0c04160453fe04c33db6c
4
- data.tar.gz: 1c45a468970af35413989b9af9f516efb1fc7aae17b401fa83626a762141d04e
3
+ metadata.gz: 4f06b4949ffd040a0587458c5e06af9638a8bbd5138d9febdade9c1ffe89f9e9
4
+ data.tar.gz: d4e6ba9273e3b897fe09710e56a6e13faf9b37b99ac409dfac950f9ebce8cca7
5
5
  SHA512:
6
- metadata.gz: 6352fc0f0414020fbd48118313e6557e18f6dbccbd1a67270ef04cf693c3abd3a054ff68548e4235266acb41182b0907df079ba99e0b461afc6f320e1b3b923f
7
- data.tar.gz: e19986fa3ee2298dd6ed3d00f300e5ce25b956562cf6609b27fb976b9acc5df6e6f3ddcf22926de76cd9d9eb97d6d95d05d8c281dc4df0a53ec27b81a16552dd
6
+ metadata.gz: 87a83e5460f26c7ee1678587b2123ca5663cb45af60f2f8aef4e49486e7c77c6f0b7d74f15c9c6e45f025d3206e9f0b986bc416a18077af1cc35c9ce5f2c7d52
7
+ data.tar.gz: c6bb25a27405a90be3ce34cffea4c79c2a359daebd82041dd1f2c2b536a1c064bcedeb75157b440ca2cc629c6c86cbaad7d58eaba1a877c383f6cffc8930fd05
data/HISTORY CHANGED
@@ -1,5 +1,21 @@
1
1
  = Release History
2
2
 
3
+ == 3.2.4 / 2022-10-29
4
+
5
+ * Support libxml2 version 2.10.2 (Charlie Savage)
6
+ * Reduce number of globally included C header files (Charlie Savage)
7
+
8
+ == 3.2.3 / 2022-05-22
9
+
10
+ * Change some getter methods to instance variables with attr_accessors for easier debuggability (David Hansen)
11
+ * Add a number of tests related to schemas (David Hansen)
12
+ * Add schema.imported_elements so we can find imported elements (David Hansen)
13
+ * Fix segfault under windows when dereferencing a pre-existing error where the node has already been freed (David Hansen)
14
+ * Update to change name from imported_elements to imported_ns_elements and return a hash of hashes for namespaced elements (David Hansen)
15
+ * Only call xmlGetFeaturesList if LIBXML_LEGACY_ENABLED is defined. Most distros still ship libxml2 with legacy features enabled, but this will change (Nick Wellnhofer)
16
+ * Update GitHub Actions to use ruby/setup-ruby (Greg)
17
+ * Fix memory leak in rxml_node_path, node.path (vovanmozg)
18
+
3
19
  == 3.2.2 / 2022-01-15
4
20
  * Switch to Github actions for CI/CD (Greg)
5
21
  * Test fixes (Greg, Sergio Durigan Junior)
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ Rake::ExtensionTask.new do |ext|
21
21
  ext.name = SO_NAME
22
22
  ext.ext_dir = "ext/libxml"
23
23
  ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
24
- if RUBY_PLATFORM.match(/mswin32|mswin64|mingw32|ucrt/)
24
+ if RUBY_PLATFORM.match(/mswin|mingw/)
25
25
  ext.config_options <<
26
26
  if (dir = ENV['WINDOWS_XML2_INCLUDE'])
27
27
  "--with-xml2-include=#{dir}"
@@ -49,7 +49,7 @@ Gem::PackageTask.new(spec) do |pkg|
49
49
  end
50
50
 
51
51
  # Setup Windows Gem
52
- if RUBY_PLATFORM.match(/mswin32|mswin64|mingw32/)
52
+ if RUBY_PLATFORM.match(/mswin|mingw/)
53
53
  binaries = (FileList['lib/**/*.so',
54
54
  'lib/**/*dll'])
55
55
 
@@ -0,0 +1,3 @@
1
+ #ifndef EXTCONF_H
2
+ #define EXTCONF_H
3
+ #endif
@@ -4,29 +4,7 @@
4
4
  #define __RUBY_LIBXML_H__
5
5
 
6
6
  #include <ruby.h>
7
- #include <libxml/parser.h>
8
- #include <libxml/parserInternals.h>
9
- #include <libxml/debugXML.h>
10
7
  #include <libxml/xmlversion.h>
11
- #include <libxml/xmlmemory.h>
12
- #include <libxml/xpath.h>
13
- #include <libxml/valid.h>
14
- #include <libxml/catalog.h>
15
- #include <libxml/HTMLparser.h>
16
- #include <libxml/xmlreader.h>
17
- #include <libxml/c14n.h>
18
-
19
- #include <ruby/encoding.h>
20
-
21
- #ifdef LIBXML_DEBUG_ENABLED
22
- #include <libxml/xpathInternals.h>
23
- #endif
24
- #ifdef LIBXML_XINCLUDE_ENABLED
25
- #include <libxml/xinclude.h>
26
- #endif
27
- #ifdef LIBXML_XPTR_ENABLED
28
- #include <libxml/xpointer.h>
29
- #endif
30
8
 
31
9
  #include "ruby_xml_version.h"
32
10
  #include "ruby_xml.h"
@@ -1,6 +1,8 @@
1
1
  #include "ruby_libxml.h"
2
2
  #include "ruby_xml.h"
3
3
 
4
+ #include <libxml/catalog.h>
5
+
4
6
  VALUE mXML;
5
7
 
6
8
  /*
@@ -764,6 +766,9 @@ static VALUE rxml_default_save_no_empty_tags_set(VALUE klass, VALUE value)
764
766
  */
765
767
  static VALUE rxml_features(VALUE klass)
766
768
  {
769
+ #ifndef LIBXML_LEGACY_ENABLED
770
+ return Qnil;
771
+ #else
767
772
  VALUE arr, str;
768
773
  int i, len = MAX_LIBXML_FEATURES_LEN;
769
774
  char **list = NULL;
@@ -788,6 +793,7 @@ static VALUE rxml_features(VALUE klass)
788
793
 
789
794
  ruby_xfree(list);
790
795
  return (arr);
796
+ #endif /* LIBXML_LEGACY_ENABLED */
791
797
  }
792
798
 
793
799
  /*
@@ -52,6 +52,12 @@
52
52
  #include "ruby_libxml.h"
53
53
  #include "ruby_xml_document.h"
54
54
 
55
+ #include <libxml/c14n.h>
56
+ #include <libxml/debugXML.h>
57
+ #include <libxml/relaxng.h>
58
+ #include <libxml/xmlschemas.h>
59
+ #include <libxml/xinclude.h>
60
+
55
61
  VALUE cXMLDocument;
56
62
 
57
63
  void rxml_document_free(xmlDocPtr xdoc)
@@ -3,6 +3,8 @@
3
3
  #ifndef __RXML_ENCODING__
4
4
  #define __RXML_ENCODING__
5
5
 
6
+ #include <ruby/encoding.h>
7
+
6
8
  extern VALUE mXMLEncoding;
7
9
 
8
10
  void rxml_init_encoding();
@@ -3,6 +3,8 @@
3
3
  #ifndef __RXML_ERROR__
4
4
  #define __RXML_ERROR__
5
5
 
6
+ #include <libxml/xmlerror.h>
7
+
6
8
  extern VALUE eXMLError;
7
9
 
8
10
  void rxml_init_error();
@@ -2,6 +2,8 @@
2
2
 
3
3
  #include "ruby_libxml.h"
4
4
 
5
+ #include <libxml/HTMLparser.h>
6
+
5
7
  /* Document-class: LibXML::XML::HTMLParser
6
8
  *
7
9
  * The HTML parser implements an HTML 4.0 non-verifying parser with an API
@@ -3,6 +3,7 @@
3
3
  #include "ruby_libxml.h"
4
4
  #include "ruby_xml_html_parser_context.h"
5
5
 
6
+ #include <libxml/parserInternals.h>
6
7
 
7
8
  /*
8
9
  * Document-class: LibXML::XML::HTMLParser::Context
@@ -2,6 +2,8 @@
2
2
 
3
3
  #include "ruby_libxml.h"
4
4
 
5
+ #include <libxml/HTMLparser.h>
6
+
5
7
  /* Document-class: LibXML::XML::HTMLParser::Options
6
8
  *
7
9
  * Options to control the operation of the HTMLParser. The easiest
@@ -52,6 +52,7 @@ static VALUE rxml_namespace_initialize(VALUE self, VALUE node, VALUE prefix,
52
52
 
53
53
  Check_Type(node, T_DATA);
54
54
  Data_Get_Struct(node, xmlNode, xnode);
55
+ xmlResetLastError();
55
56
 
56
57
  /* Prefix can be null - that means its the default namespace */
57
58
  xmlPrefix = NIL_P(prefix) ? NULL : (xmlChar *)StringValuePtr(prefix);
@@ -2,6 +2,10 @@
2
2
  #include "ruby_xml_node.h"
3
3
  #include <assert.h>
4
4
 
5
+ #include <libxml/debugXML.h>
6
+ #include <libxml/parserInternals.h>
7
+ #include <libxml/xlink.h>
8
+
5
9
  VALUE cXMLNode;
6
10
 
7
11
  /* Document-class: LibXML::XML::Node
@@ -983,14 +987,18 @@ static VALUE rxml_node_path(VALUE self)
983
987
  {
984
988
  xmlNodePtr xnode;
985
989
  xmlChar *path;
990
+ VALUE result = Qnil;
986
991
 
987
992
  xnode = rxml_get_xnode(self);
988
993
  path = xmlGetNodePath(xnode);
989
994
 
990
- if (path == NULL)
991
- return (Qnil);
992
- else
993
- return (rxml_new_cstr( path, NULL));
995
+ if (path)
996
+ {
997
+ result = rxml_new_cstr( path, NULL);
998
+ xmlFree(path);
999
+ }
1000
+
1001
+ return result;
994
1002
  }
995
1003
 
996
1004
  /*
@@ -3,6 +3,8 @@
3
3
  #include "ruby_libxml.h"
4
4
  #include "ruby_xml_parser_context.h"
5
5
 
6
+ #include <libxml/parserInternals.h>
7
+
6
8
  VALUE cXMLParserContext;
7
9
  static ID IO_ATTR;
8
10
 
@@ -4,6 +4,9 @@
4
4
  #include "ruby_libxml.h"
5
5
  #include "ruby_xml_reader.h"
6
6
 
7
+ #include <libxml/xmlreader.h>
8
+ #include <libxml/xmlschemas.h>
9
+
7
10
  /*
8
11
  * Document-class: LibXML::XML::Reader
9
12
  *
@@ -4,9 +4,6 @@
4
4
  #ifndef __RXML_READER__
5
5
  #define __RXML_READER__
6
6
 
7
- #include <libxml/xmlreader.h>
8
- #include <libxml/xmlschemas.h>
9
-
10
7
  extern VALUE cXMLReader;
11
8
 
12
9
  void rxml_init_reader(void);
@@ -1,6 +1,8 @@
1
1
  #include "ruby_libxml.h"
2
2
  #include "ruby_xml_relaxng.h"
3
3
 
4
+ #include <libxml/relaxng.h>
5
+
4
6
  /*
5
7
  * Document-class: LibXML::XML::RelaxNG
6
8
  *
@@ -1,8 +1,6 @@
1
1
  #ifndef __RXML_RELAXNG__
2
2
  #define __RXML_RELAXNG__
3
3
 
4
- #include <libxml/relaxng.h>
5
-
6
4
  extern VALUE cXMLRelaxNG;
7
5
 
8
6
  void rxml_init_relaxng(void);