libxml-ruby 3.2.1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY +37 -0
- data/Rakefile +24 -16
- data/ext/libxml/libxml.c +0 -1
- data/ext/libxml/libxml_ruby.def +0 -1
- data/ext/libxml/ruby_libxml.h +0 -23
- data/ext/libxml/ruby_xml.c +3 -37
- data/ext/libxml/ruby_xml.h +1 -1
- data/ext/libxml/ruby_xml_cbg.c +1 -1
- data/ext/libxml/ruby_xml_document.c +6 -0
- data/ext/libxml/ruby_xml_dtd.c +1 -1
- data/ext/libxml/ruby_xml_encoding.c +2 -2
- data/ext/libxml/ruby_xml_encoding.h +2 -0
- data/ext/libxml/ruby_xml_error.c +3 -3
- data/ext/libxml/ruby_xml_error.h +3 -1
- data/ext/libxml/ruby_xml_html_parser.c +2 -0
- data/ext/libxml/ruby_xml_html_parser_context.c +1 -1
- data/ext/libxml/ruby_xml_html_parser_options.c +2 -0
- data/ext/libxml/ruby_xml_input_cbg.c +4 -7
- data/ext/libxml/ruby_xml_io.c +1 -1
- data/ext/libxml/ruby_xml_namespace.c +1 -0
- data/ext/libxml/ruby_xml_node.c +11 -15
- data/ext/libxml/ruby_xml_parser.h +0 -2
- data/ext/libxml/ruby_xml_parser_context.c +2 -0
- data/ext/libxml/ruby_xml_parser_options.h +0 -2
- data/ext/libxml/ruby_xml_reader.c +3 -0
- data/ext/libxml/ruby_xml_reader.h +0 -3
- data/ext/libxml/ruby_xml_relaxng.c +2 -0
- data/ext/libxml/ruby_xml_relaxng.h +0 -2
- data/ext/libxml/ruby_xml_schema.c +223 -81
- data/ext/libxml/ruby_xml_schema.h +4 -788
- data/ext/libxml/ruby_xml_schema_attribute.c +69 -71
- data/ext/libxml/ruby_xml_schema_attribute.h +25 -3
- data/ext/libxml/ruby_xml_schema_element.c +28 -54
- data/ext/libxml/ruby_xml_schema_element.h +0 -3
- data/ext/libxml/ruby_xml_schema_facet.c +19 -21
- data/ext/libxml/ruby_xml_schema_facet.h +0 -4
- data/ext/libxml/ruby_xml_schema_type.c +56 -37
- data/ext/libxml/ruby_xml_version.h +4 -4
- data/ext/libxml/ruby_xml_writer.c +4 -0
- data/ext/libxml/ruby_xml_writer.h +0 -4
- data/ext/libxml/ruby_xml_xinclude.c +4 -0
- data/ext/libxml/ruby_xml_xpath.c +1 -0
- data/ext/libxml/ruby_xml_xpath.h +2 -0
- data/ext/libxml/ruby_xml_xpath_context.c +2 -0
- data/ext/libxml/ruby_xml_xpath_object.c +1 -0
- data/lib/libxml/error.rb +7 -7
- data/libxml-ruby.gemspec +1 -1
- data/test/model/shiporder.rnc +2 -2
- data/test/model/shiporder.rng +2 -2
- data/test/model/shiporder.xsd +7 -3
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/test_document.rb +2 -1
- data/test/test_dtd.rb +2 -1
- data/test/test_error.rb +173 -157
- data/test/test_helper.rb +6 -0
- data/test/test_parser.rb +1 -1
- data/test/test_parser_context.rb +1 -7
- data/test/test_reader.rb +2 -1
- data/test/test_sax_parser.rb +13 -6
- data/test/test_schema.rb +92 -29
- data/test/test_xml.rb +12 -7
- metadata +11 -18
- data/MANIFEST +0 -166
- data/ext/libxml/ruby_xml_xpointer.c +0 -99
- data/ext/libxml/ruby_xml_xpointer.h +0 -11
- data/setup.rb +0 -1584
- data/test/test.xml +0 -2
- data/test/test_suite.rb +0 -48
- data/test/test_xpointer.rb +0 -72
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 791562c871b9c8d9680778bf68bdde22c5911ad147bd28634f3051d2c3b5bf6a
|
4
|
+
data.tar.gz: e2782de74edb9609634ef022f9d94d98591d3e49c38cb5d667af407ffa87b5da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f3569183ea0e3cc00895c2fa3760b280dd1244f7c69144e661c7fbbdc575f57c67b479b5f0074a6cbf13c93d25bb6e9bd1c89df443388187f8f6472ba00ddfd8
|
7
|
+
data.tar.gz: d856e272adb85fa91aca6d83fd3a5d1c4ae4e1e40f2cb318d9e369ed86c14df973c942c74a4c84e76c83f270eaaadc47021571852e1e39ef750927a3c5930f07
|
data/HISTORY
CHANGED
@@ -1,5 +1,42 @@
|
|
1
1
|
= Release History
|
2
2
|
|
3
|
+
== 4.1.1 / 2023-05-01
|
4
|
+
|
5
|
+
* Fix compile warning (or error) for input_callbacks_register_input_callbacks (Charlie Savage)
|
6
|
+
* Remove call to deprecated function htmlDefaultSAXHandlerInit (Charlie Savage)
|
7
|
+
|
8
|
+
== 4.1.0 / 2023-04-30
|
9
|
+
|
10
|
+
* Fix compile warning (or error) for rxml_encoding_to_rb_encoding (Charlie Savage)
|
11
|
+
* Breaking - Remove LibXML::XML.features since its uses functionality deprecated in LibXML (Charlie Savage)
|
12
|
+
|
13
|
+
== 4.0.0 / 2022-12-28
|
14
|
+
|
15
|
+
* Breaking - Remove support for XPointer since libxml2 has deprecated it and will remove it (Charlie Savage)
|
16
|
+
* Breaking - Remove support for ancient setup.rb script (Charlie Savage)
|
17
|
+
|
18
|
+
== 3.2.4 / 2022-10-29
|
19
|
+
|
20
|
+
* Support libxml2 version 2.10.2 (Charlie Savage)
|
21
|
+
* Reduce number of globally included C header files (Charlie Savage)
|
22
|
+
|
23
|
+
== 3.2.3 / 2022-05-22
|
24
|
+
|
25
|
+
* Change some getter methods to instance variables with attr_accessors for easier debuggability (David Hansen)
|
26
|
+
* Add a number of tests related to schemas (David Hansen)
|
27
|
+
* Add schema.imported_elements so we can find imported elements (David Hansen)
|
28
|
+
* Fix segfault under windows when dereferencing a pre-existing error where the node has already been freed (David Hansen)
|
29
|
+
* Update to change name from imported_elements to imported_ns_elements and return a hash of hashes for namespaced elements (David Hansen)
|
30
|
+
* Only call xmlGetFeaturesList if LIBXML_LEGACY_ENABLED is defined. Most distros still ship libxml2 with legacy features enabled, but this will change (Nick Wellnhofer)
|
31
|
+
* Update GitHub Actions to use ruby/setup-ruby (Greg)
|
32
|
+
* Fix memory leak in rxml_node_path, node.path (vovanmozg)
|
33
|
+
|
34
|
+
== 3.2.2 / 2022-01-15
|
35
|
+
* Switch to Github actions for CI/CD (Greg)
|
36
|
+
* Test fixes (Greg, Sergio Durigan Junior)
|
37
|
+
* Fix typo on test/test_sax_parser.rb (Sergio Durigan Junior)
|
38
|
+
* Update homepage in gemspec (Pirate Praveen Arimbrathodiyil)
|
39
|
+
|
3
40
|
== 3.2.1 / 2020-11-05
|
4
41
|
|
5
42
|
* Fix incorrect handling of encodings when using XMLWriter.io (Charlie Savage)
|
data/Rakefile
CHANGED
@@ -16,21 +16,29 @@ spec = Gem::Specification.load("#{GEM_NAME}.gemspec")
|
|
16
16
|
task :default => [:test]
|
17
17
|
|
18
18
|
# Setup compile tasks
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
ext.config_options <<
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
19
|
+
Rake::ExtensionTask.new do |ext|
|
20
|
+
ext.gem_spec = spec
|
21
|
+
ext.name = SO_NAME
|
22
|
+
ext.ext_dir = "ext/libxml"
|
23
|
+
ext.lib_dir = "lib/#{RUBY_VERSION.sub(/\.\d$/, '')}"
|
24
|
+
if RUBY_PLATFORM.match(/mswin|mingw/)
|
25
|
+
ext.config_options <<
|
26
|
+
if (dir = ENV['WINDOWS_XML2_INCLUDE'])
|
27
|
+
"--with-xml2-include=#{dir}"
|
28
|
+
else
|
29
|
+
case RUBY_PLATFORM
|
30
|
+
when 'i386-mingw32'
|
31
|
+
'--with-xml2-include=C:/msys64/mingw32/include/libxml2'
|
32
|
+
when 'x64-mingw32'
|
33
|
+
'--with-xml2-include=C:/msys64/mingw64/include/libxml2'
|
34
|
+
when 'x64-mingw-ucrt'
|
35
|
+
'--with-xml2-include=C:/msys64/ucrt64/include/libxml2'
|
36
|
+
else
|
37
|
+
raise "Unknown Windows Ruby, please set ENV['WINDOWS_XML2_INCLUDE']"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
else
|
41
|
+
ext.config_options << '--with-xml2-include=/usr/include/libxml2'
|
34
42
|
end
|
35
43
|
end
|
36
44
|
|
@@ -41,7 +49,7 @@ Gem::PackageTask.new(spec) do |pkg|
|
|
41
49
|
end
|
42
50
|
|
43
51
|
# Setup Windows Gem
|
44
|
-
if RUBY_PLATFORM.match(/
|
52
|
+
if RUBY_PLATFORM.match(/mswin|mingw/)
|
45
53
|
binaries = (FileList['lib/**/*.so',
|
46
54
|
'lib/**/*dll'])
|
47
55
|
|
data/ext/libxml/libxml.c
CHANGED
data/ext/libxml/libxml_ruby.def
CHANGED
data/ext/libxml/ruby_libxml.h
CHANGED
@@ -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"
|
@@ -56,7 +34,6 @@
|
|
56
34
|
#include "ruby_xml_xpath_expression.h"
|
57
35
|
#include "ruby_xml_xpath_context.h"
|
58
36
|
#include "ruby_xml_xpath_object.h"
|
59
|
-
#include "ruby_xml_xpointer.h"
|
60
37
|
#include "ruby_xml_input_cbg.h"
|
61
38
|
#include "ruby_xml_dtd.h"
|
62
39
|
#include "ruby_xml_schema.h"
|
data/ext/libxml/ruby_xml.c
CHANGED
@@ -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
|
/*
|
@@ -477,7 +479,7 @@ static VALUE rxml_default_line_numbers_set(VALUE klass, VALUE value)
|
|
477
479
|
}
|
478
480
|
}
|
479
481
|
|
480
|
-
int rxml_libxml_default_options()
|
482
|
+
int rxml_libxml_default_options(void)
|
481
483
|
{
|
482
484
|
int options = 0;
|
483
485
|
|
@@ -755,41 +757,6 @@ static VALUE rxml_default_save_no_empty_tags_set(VALUE klass, VALUE value)
|
|
755
757
|
}
|
756
758
|
}
|
757
759
|
|
758
|
-
/*
|
759
|
-
* call-seq:
|
760
|
-
* XML.features -> ["feature", ..., "feature"]
|
761
|
-
*
|
762
|
-
* Obtains an array of strings representing features supported
|
763
|
-
* (and enabled) by the installed libxml.
|
764
|
-
*/
|
765
|
-
static VALUE rxml_features(VALUE klass)
|
766
|
-
{
|
767
|
-
VALUE arr, str;
|
768
|
-
int i, len = MAX_LIBXML_FEATURES_LEN;
|
769
|
-
char **list = NULL;
|
770
|
-
|
771
|
-
list = ALLOC_N(char *,MAX_LIBXML_FEATURES_LEN);
|
772
|
-
MEMZERO(list, char *, MAX_LIBXML_FEATURES_LEN);
|
773
|
-
|
774
|
-
arr = rb_ary_new();
|
775
|
-
if (xmlGetFeaturesList(&len, (const char **) list) == -1)
|
776
|
-
return Qnil;
|
777
|
-
|
778
|
-
for (i = 0; i < len; i++)
|
779
|
-
{
|
780
|
-
str = rb_str_new2((const char *) list[i]);
|
781
|
-
rb_gc_unregister_address(&str);
|
782
|
-
rb_ary_push(arr, str);
|
783
|
-
}
|
784
|
-
|
785
|
-
if (len == MAX_LIBXML_FEATURES_LEN)
|
786
|
-
rb_warn(
|
787
|
-
"Please contact libxml-devel@rubyforge.org and ask to have the \"MAX_LIBXML_FEATURES_LEN increased\" because you could possibly be seeing an incomplete list");
|
788
|
-
|
789
|
-
ruby_xfree(list);
|
790
|
-
return (arr);
|
791
|
-
}
|
792
|
-
|
793
760
|
/*
|
794
761
|
* call-seq:
|
795
762
|
* XML.indent_tree_output -> (true|false)
|
@@ -925,7 +892,6 @@ void rxml_init_xml(void)
|
|
925
892
|
rb_define_module_function(mXML, "default_warnings=", rxml_default_warnings_set, 1);
|
926
893
|
rb_define_module_function(mXML, "default_save_no_empty_tags", rxml_default_save_no_empty_tags_get, 0);
|
927
894
|
rb_define_module_function(mXML, "default_save_no_empty_tags=", rxml_default_save_no_empty_tags_set, 1);
|
928
|
-
rb_define_module_function(mXML, "features", rxml_features, 0);
|
929
895
|
rb_define_module_function(mXML, "indent_tree_output", rxml_indent_tree_output_get, 0);
|
930
896
|
rb_define_module_function(mXML, "indent_tree_output=", rxml_indent_tree_output_set, 1);
|
931
897
|
rb_define_module_function(mXML, "memory_dump", rxml_memory_dump, 0);
|
data/ext/libxml/ruby_xml.h
CHANGED
data/ext/libxml/ruby_xml_cbg.c
CHANGED
@@ -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)
|
data/ext/libxml/ruby_xml_dtd.c
CHANGED
@@ -235,7 +235,7 @@ static VALUE rxml_dtd_initialize(int argc, VALUE *argv, VALUE self)
|
|
235
235
|
return self;
|
236
236
|
}
|
237
237
|
|
238
|
-
void rxml_init_dtd()
|
238
|
+
void rxml_init_dtd(void)
|
239
239
|
{
|
240
240
|
cXMLDtd = rb_define_class_under(mXML, "Dtd", rb_cObject);
|
241
241
|
rb_define_alloc_func(cXMLDtd, rxml_dtd_alloc);
|
@@ -182,7 +182,7 @@ rb_encoding* rxml_figure_encoding(const xmlChar* xencoding)
|
|
182
182
|
VALUE rxml_new_cstr(const xmlChar* xstr, const xmlChar* xencoding)
|
183
183
|
{
|
184
184
|
rb_encoding *rbencoding = rxml_figure_encoding(xencoding);
|
185
|
-
return rb_external_str_new_with_enc((const char*)xstr, strlen((const char*)xstr), rbencoding);
|
185
|
+
return rb_external_str_new_with_enc((const char*)xstr, (long)strlen((const char*)xstr), rbencoding);
|
186
186
|
}
|
187
187
|
|
188
188
|
VALUE rxml_new_cstr_len(const xmlChar* xstr, const long length, const xmlChar* xencoding)
|
@@ -197,7 +197,7 @@ void rxml_init_encoding(void)
|
|
197
197
|
rb_define_module_function(mXMLEncoding, "from_s", rxml_encoding_from_s, 1);
|
198
198
|
rb_define_module_function(mXMLEncoding, "to_s", rxml_encoding_to_s, 1);
|
199
199
|
|
200
|
-
rb_define_module_function(mXMLEncoding, "to_rb_encoding", rxml_encoding_to_rb_encoding,
|
200
|
+
rb_define_module_function(mXMLEncoding, "to_rb_encoding", rxml_encoding_to_rb_encoding, 1);
|
201
201
|
|
202
202
|
/* -1: No char encoding detected. */
|
203
203
|
rb_define_const(mXMLEncoding, "ERROR", INT2NUM(XML_CHAR_ENCODING_ERROR));
|
data/ext/libxml/ruby_xml_error.c
CHANGED
@@ -44,7 +44,7 @@ static ID ERROR_HANDLER_ID;
|
|
44
44
|
* Returns the proc that will be called when libxml generates
|
45
45
|
* warning, error or fatal error messages.
|
46
46
|
*/
|
47
|
-
static VALUE rxml_error_get_handler()
|
47
|
+
static VALUE rxml_error_get_handler(VALUE self)
|
48
48
|
{
|
49
49
|
VALUE block = rb_cvar_get(eXMLError, ERROR_HANDLER_ID);
|
50
50
|
return block;
|
@@ -102,7 +102,7 @@ static void structuredErrorFunc(void *userData, xmlErrorPtr xerror)
|
|
102
102
|
VALUE error = rxml_error_wrap(xerror);
|
103
103
|
|
104
104
|
/* Wrap error up as Ruby object and send it off to ruby */
|
105
|
-
VALUE block = rxml_error_get_handler();
|
105
|
+
VALUE block = rxml_error_get_handler(error);
|
106
106
|
|
107
107
|
/* Now call global handler */
|
108
108
|
if (block != Qnil)
|
@@ -165,7 +165,7 @@ NORETURN(void rxml_raise(xmlErrorPtr xerror))
|
|
165
165
|
rb_exc_raise(error);
|
166
166
|
}
|
167
167
|
|
168
|
-
void rxml_init_error()
|
168
|
+
void rxml_init_error(void)
|
169
169
|
{
|
170
170
|
CALL_METHOD = rb_intern("call");
|
171
171
|
ERROR_HANDLER_ID = rb_intern("@@__error_handler_callback__");
|
data/ext/libxml/ruby_xml_error.h
CHANGED
@@ -3,9 +3,11 @@
|
|
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
|
-
void rxml_init_error();
|
10
|
+
void rxml_init_error(void);
|
9
11
|
VALUE rxml_error_wrap(xmlErrorPtr xerror);
|
10
12
|
NORETURN(void rxml_raise(xmlErrorPtr xerror));
|
11
13
|
|
@@ -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
|
@@ -242,7 +243,6 @@ static VALUE rxml_html_parser_context_string(VALUE klass, VALUE string)
|
|
242
243
|
sets to 0 and xmlCtxtUseOptionsInternal sets to 1. So we have to call both. */
|
243
244
|
htmlCtxtUseOptions(ctxt, rxml_libxml_default_options());
|
244
245
|
|
245
|
-
htmlDefaultSAXHandlerInit();
|
246
246
|
if (ctxt->sax != NULL)
|
247
247
|
memcpy(ctxt->sax, &htmlDefaultSAXHandler, sizeof(xmlSAXHandlerV1));
|
248
248
|
|
@@ -88,7 +88,7 @@ int ic_close(void *context)
|
|
88
88
|
*
|
89
89
|
* Register a new set of I/O callback for handling parser input.
|
90
90
|
*/
|
91
|
-
static VALUE input_callbacks_register_input_callbacks()
|
91
|
+
static VALUE input_callbacks_register_input_callbacks(VALUE self)
|
92
92
|
{
|
93
93
|
xmlRegisterInputCallbacks(ic_match, ic_open, ic_read, ic_close);
|
94
94
|
return (Qtrue);
|
@@ -182,10 +182,7 @@ void rxml_init_input_callbacks(void)
|
|
182
182
|
cInputCallbacks = rb_define_class_under(mXML, "InputCallbacks", rb_cObject);
|
183
183
|
|
184
184
|
/* Class Methods */
|
185
|
-
rb_define_singleton_method(cInputCallbacks, "register",
|
186
|
-
|
187
|
-
rb_define_singleton_method(cInputCallbacks, "
|
188
|
-
input_callbacks_add_scheme, 2);
|
189
|
-
rb_define_singleton_method(cInputCallbacks, "remove_scheme",
|
190
|
-
input_callbacks_remove_scheme, 1);
|
185
|
+
rb_define_singleton_method(cInputCallbacks, "register", input_callbacks_register_input_callbacks, 0);
|
186
|
+
rb_define_singleton_method(cInputCallbacks, "add_scheme", input_callbacks_add_scheme, 2);
|
187
|
+
rb_define_singleton_method(cInputCallbacks, "remove_scheme", input_callbacks_remove_scheme, 1);
|
191
188
|
}
|
data/ext/libxml/ruby_xml_io.c
CHANGED
@@ -30,7 +30,7 @@ int rxml_write_callback(VALUE io, const char *buffer, int len)
|
|
30
30
|
{
|
31
31
|
// Could be StringIO
|
32
32
|
VALUE written, string;
|
33
|
-
string = rb_external_str_new_with_enc(buffer, strlen(buffer), rb_enc_get(io));
|
33
|
+
string = rb_external_str_new_with_enc(buffer, (long)strlen(buffer), rb_enc_get(io));
|
34
34
|
written = rb_funcall(io, WRITE_METHOD, 1, string);
|
35
35
|
return NUM2INT(written);
|
36
36
|
}
|
@@ -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);
|
data/ext/libxml/ruby_xml_node.c
CHANGED
@@ -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,25 +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
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
}
|
995
|
+
if (path)
|
996
|
+
{
|
997
|
+
result = rxml_new_cstr( path, NULL);
|
998
|
+
xmlFree(path);
|
999
|
+
}
|
995
1000
|
|
996
|
-
|
997
|
-
* call-seq:
|
998
|
-
* node.pointer -> XML::NodeSet
|
999
|
-
*
|
1000
|
-
* Evaluates an XPointer expression relative to this node.
|
1001
|
-
*/
|
1002
|
-
static VALUE rxml_node_pointer(VALUE self, VALUE xptr_str)
|
1003
|
-
{
|
1004
|
-
return (rxml_xpointer_point2(self, xptr_str));
|
1001
|
+
return result;
|
1005
1002
|
}
|
1006
1003
|
|
1007
1004
|
/*
|
@@ -1389,7 +1386,6 @@ void rxml_init_node(void)
|
|
1389
1386
|
rb_define_method(cXMLNode, "output_escaping?", rxml_node_output_escaping_q, 0);
|
1390
1387
|
rb_define_method(cXMLNode, "output_escaping=", rxml_node_output_escaping_set, 1);
|
1391
1388
|
rb_define_method(cXMLNode, "path", rxml_node_path, 0);
|
1392
|
-
rb_define_method(cXMLNode, "pointer", rxml_node_pointer, 1);
|
1393
1389
|
rb_define_method(cXMLNode, "remove!", rxml_node_remove_ex, 0);
|
1394
1390
|
rb_define_method(cXMLNode, "space_preserve", rxml_node_space_preserve_get, 0);
|
1395
1391
|
rb_define_method(cXMLNode, "space_preserve=", rxml_node_space_preserve_set, 1);
|