libxml-ruby 3.2.2 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
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);