nokogiri 1.12.5 → 1.14.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (156) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +41 -0
  3. data/LICENSE-DEPENDENCIES.md +830 -509
  4. data/LICENSE.md +1 -1
  5. data/README.md +23 -14
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +33 -66
  8. data/ext/nokogiri/extconf.rb +159 -63
  9. data/ext/nokogiri/gumbo.c +21 -11
  10. data/ext/nokogiri/html4_document.c +2 -2
  11. data/ext/nokogiri/html4_element_description.c +1 -1
  12. data/ext/nokogiri/html4_entity_lookup.c +2 -2
  13. data/ext/nokogiri/html4_sax_parser_context.c +3 -9
  14. data/ext/nokogiri/html4_sax_push_parser.c +1 -1
  15. data/ext/nokogiri/nokogiri.c +38 -51
  16. data/ext/nokogiri/nokogiri.h +26 -14
  17. data/ext/nokogiri/test_global_handlers.c +1 -1
  18. data/ext/nokogiri/xml_attr.c +3 -3
  19. data/ext/nokogiri/xml_attribute_decl.c +5 -5
  20. data/ext/nokogiri/xml_cdata.c +3 -3
  21. data/ext/nokogiri/xml_comment.c +1 -1
  22. data/ext/nokogiri/xml_document.c +53 -44
  23. data/ext/nokogiri/xml_document_fragment.c +1 -3
  24. data/ext/nokogiri/xml_dtd.c +11 -11
  25. data/ext/nokogiri/xml_element_content.c +3 -3
  26. data/ext/nokogiri/xml_element_decl.c +5 -5
  27. data/ext/nokogiri/xml_encoding_handler.c +28 -14
  28. data/ext/nokogiri/xml_entity_decl.c +6 -6
  29. data/ext/nokogiri/xml_entity_reference.c +1 -1
  30. data/ext/nokogiri/xml_namespace.c +80 -14
  31. data/ext/nokogiri/xml_node.c +982 -396
  32. data/ext/nokogiri/xml_node_set.c +4 -6
  33. data/ext/nokogiri/xml_processing_instruction.c +1 -1
  34. data/ext/nokogiri/xml_reader.c +133 -32
  35. data/ext/nokogiri/xml_relax_ng.c +1 -3
  36. data/ext/nokogiri/xml_sax_parser.c +23 -17
  37. data/ext/nokogiri/xml_sax_parser_context.c +11 -9
  38. data/ext/nokogiri/xml_sax_push_parser.c +1 -3
  39. data/ext/nokogiri/xml_schema.c +4 -6
  40. data/ext/nokogiri/xml_syntax_error.c +1 -1
  41. data/ext/nokogiri/xml_text.c +2 -2
  42. data/ext/nokogiri/xml_xpath_context.c +144 -114
  43. data/ext/nokogiri/xslt_stylesheet.c +122 -23
  44. data/gumbo-parser/Makefile +10 -0
  45. data/gumbo-parser/src/attribute.h +1 -1
  46. data/gumbo-parser/src/error.c +2 -2
  47. data/gumbo-parser/src/error.h +1 -1
  48. data/gumbo-parser/src/foreign_attrs.c +2 -2
  49. data/gumbo-parser/src/{gumbo.h → nokogiri_gumbo.h} +1 -0
  50. data/gumbo-parser/src/parser.c +8 -16
  51. data/gumbo-parser/src/replacement.h +1 -1
  52. data/gumbo-parser/src/string_buffer.h +1 -1
  53. data/gumbo-parser/src/string_piece.c +1 -1
  54. data/gumbo-parser/src/svg_attrs.c +2 -2
  55. data/gumbo-parser/src/svg_tags.c +2 -2
  56. data/gumbo-parser/src/tag.c +2 -1
  57. data/gumbo-parser/src/tag_lookup.c +7 -7
  58. data/gumbo-parser/src/tag_lookup.gperf +1 -0
  59. data/gumbo-parser/src/tag_lookup.h +1 -1
  60. data/gumbo-parser/src/token_buffer.h +1 -1
  61. data/gumbo-parser/src/tokenizer.c +1 -1
  62. data/gumbo-parser/src/tokenizer.h +1 -1
  63. data/gumbo-parser/src/utf8.c +1 -1
  64. data/gumbo-parser/src/utf8.h +1 -1
  65. data/gumbo-parser/src/util.c +1 -3
  66. data/gumbo-parser/src/util.h +4 -0
  67. data/gumbo-parser/src/vector.h +1 -1
  68. data/lib/nokogiri/class_resolver.rb +67 -0
  69. data/lib/nokogiri/css/node.rb +9 -8
  70. data/lib/nokogiri/css/parser.rb +360 -341
  71. data/lib/nokogiri/css/parser.y +249 -244
  72. data/lib/nokogiri/css/parser_extras.rb +22 -20
  73. data/lib/nokogiri/css/syntax_error.rb +1 -0
  74. data/lib/nokogiri/css/tokenizer.rb +4 -3
  75. data/lib/nokogiri/css/tokenizer.rex +3 -2
  76. data/lib/nokogiri/css/xpath_visitor.rb +184 -85
  77. data/lib/nokogiri/css.rb +44 -6
  78. data/lib/nokogiri/decorators/slop.rb +8 -7
  79. data/lib/nokogiri/encoding_handler.rb +57 -0
  80. data/lib/nokogiri/extension.rb +4 -3
  81. data/lib/nokogiri/gumbo.rb +1 -0
  82. data/lib/nokogiri/html.rb +16 -10
  83. data/lib/nokogiri/html4/builder.rb +1 -0
  84. data/lib/nokogiri/html4/document.rb +56 -164
  85. data/lib/nokogiri/html4/document_fragment.rb +11 -7
  86. data/lib/nokogiri/html4/element_description.rb +1 -0
  87. data/lib/nokogiri/html4/element_description_defaults.rb +432 -532
  88. data/lib/nokogiri/html4/encoding_reader.rb +121 -0
  89. data/lib/nokogiri/html4/entity_lookup.rb +2 -1
  90. data/lib/nokogiri/html4/sax/parser.rb +5 -2
  91. data/lib/nokogiri/html4/sax/parser_context.rb +1 -0
  92. data/lib/nokogiri/html4/sax/push_parser.rb +7 -7
  93. data/lib/nokogiri/html4.rb +12 -5
  94. data/lib/nokogiri/html5/document.rb +126 -32
  95. data/lib/nokogiri/html5/document_fragment.rb +14 -4
  96. data/lib/nokogiri/html5/node.rb +12 -7
  97. data/lib/nokogiri/html5.rb +138 -222
  98. data/lib/nokogiri/jruby/dependencies.rb +2 -19
  99. data/lib/nokogiri/jruby/nokogiri_jars.rb +43 -0
  100. data/lib/nokogiri/syntax_error.rb +1 -0
  101. data/lib/nokogiri/version/constant.rb +2 -1
  102. data/lib/nokogiri/version/info.rb +32 -24
  103. data/lib/nokogiri/version.rb +1 -0
  104. data/lib/nokogiri/xml/attr.rb +54 -3
  105. data/lib/nokogiri/xml/attribute_decl.rb +2 -1
  106. data/lib/nokogiri/xml/builder.rb +35 -33
  107. data/lib/nokogiri/xml/cdata.rb +2 -1
  108. data/lib/nokogiri/xml/character_data.rb +1 -0
  109. data/lib/nokogiri/xml/document.rb +232 -143
  110. data/lib/nokogiri/xml/document_fragment.rb +88 -42
  111. data/lib/nokogiri/xml/dtd.rb +3 -2
  112. data/lib/nokogiri/xml/element_content.rb +1 -0
  113. data/lib/nokogiri/xml/element_decl.rb +2 -1
  114. data/lib/nokogiri/xml/entity_decl.rb +3 -2
  115. data/lib/nokogiri/xml/entity_reference.rb +1 -0
  116. data/lib/nokogiri/xml/namespace.rb +44 -0
  117. data/lib/nokogiri/xml/node/save_options.rb +14 -8
  118. data/lib/nokogiri/xml/node.rb +708 -383
  119. data/lib/nokogiri/xml/node_set.rb +134 -59
  120. data/lib/nokogiri/xml/notation.rb +12 -0
  121. data/lib/nokogiri/xml/parse_options.rb +140 -56
  122. data/lib/nokogiri/xml/pp/character_data.rb +8 -6
  123. data/lib/nokogiri/xml/pp/node.rb +26 -26
  124. data/lib/nokogiri/xml/pp.rb +1 -0
  125. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  126. data/lib/nokogiri/xml/reader.rb +20 -24
  127. data/lib/nokogiri/xml/relax_ng.rb +1 -0
  128. data/lib/nokogiri/xml/sax/document.rb +20 -19
  129. data/lib/nokogiri/xml/sax/parser.rb +38 -36
  130. data/lib/nokogiri/xml/sax/parser_context.rb +7 -3
  131. data/lib/nokogiri/xml/sax/push_parser.rb +5 -5
  132. data/lib/nokogiri/xml/sax.rb +1 -0
  133. data/lib/nokogiri/xml/schema.rb +7 -6
  134. data/lib/nokogiri/xml/searchable.rb +93 -62
  135. data/lib/nokogiri/xml/syntax_error.rb +5 -4
  136. data/lib/nokogiri/xml/text.rb +1 -0
  137. data/lib/nokogiri/xml/xpath/syntax_error.rb +2 -1
  138. data/lib/nokogiri/xml/xpath.rb +12 -0
  139. data/lib/nokogiri/xml/xpath_context.rb +2 -3
  140. data/lib/nokogiri/xml.rb +4 -3
  141. data/lib/nokogiri/xslt/stylesheet.rb +1 -0
  142. data/lib/nokogiri/xslt.rb +21 -13
  143. data/lib/nokogiri.rb +22 -27
  144. data/lib/xsd/xmlparser/nokogiri.rb +28 -25
  145. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  146. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +2445 -1919
  147. data/ports/archives/libxml2-2.10.4.tar.xz +0 -0
  148. data/ports/archives/libxslt-1.1.37.tar.xz +0 -0
  149. metadata +20 -171
  150. data/patches/libxml2/0004-use-glibc-strlen.patch +0 -53
  151. data/patches/libxml2/0005-avoid-isnan-isinf.patch +0 -81
  152. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +0 -2511
  153. data/patches/libxml2/0007-Fix-XPath-recursion-limit.patch +0 -31
  154. data/patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch +0 -19
  155. data/ports/archives/libxml2-2.9.12.tar.gz +0 -0
  156. data/ports/archives/libxslt-1.1.34.tar.gz +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nokogiri
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.5
4
+ version: 1.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
@@ -20,194 +20,42 @@ authors:
20
20
  autorequire:
21
21
  bindir: bin
22
22
  cert_chain: []
23
- date: 2021-09-27 00:00:00.000000000 Z
23
+ date: 2023-04-11 00:00:00.000000000 Z
24
24
  dependencies:
25
- - !ruby/object:Gem::Dependency
26
- name: racc
27
- requirement: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - "~>"
30
- - !ruby/object:Gem::Version
31
- version: '1.4'
32
- type: :runtime
33
- prerelease: false
34
- version_requirements: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - "~>"
37
- - !ruby/object:Gem::Version
38
- version: '1.4'
39
25
  - !ruby/object:Gem::Dependency
40
26
  name: mini_portile2
41
27
  requirement: !ruby/object:Gem::Requirement
42
28
  requirements:
43
29
  - - "~>"
44
30
  - !ruby/object:Gem::Version
45
- version: 2.6.1
31
+ version: 2.8.0
46
32
  type: :runtime
47
33
  prerelease: false
48
34
  version_requirements: !ruby/object:Gem::Requirement
49
35
  requirements:
50
36
  - - "~>"
51
37
  - !ruby/object:Gem::Version
52
- version: 2.6.1
53
- - !ruby/object:Gem::Dependency
54
- name: bundler
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '2.2'
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '2.2'
38
+ version: 2.8.0
39
+ force_ruby_platform: false
67
40
  - !ruby/object:Gem::Dependency
68
- name: hoe-markdown
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - "~>"
72
- - !ruby/object:Gem::Version
73
- version: '1.4'
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - "~>"
79
- - !ruby/object:Gem::Version
80
- version: '1.4'
81
- - !ruby/object:Gem::Dependency
82
- name: minitest
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '5.8'
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: '5.8'
95
- - !ruby/object:Gem::Dependency
96
- name: minitest-reporters
41
+ name: racc
97
42
  requirement: !ruby/object:Gem::Requirement
98
43
  requirements:
99
44
  - - "~>"
100
45
  - !ruby/object:Gem::Version
101
46
  version: '1.4'
102
- type: :development
47
+ type: :runtime
103
48
  prerelease: false
104
49
  version_requirements: !ruby/object:Gem::Requirement
105
50
  requirements:
106
51
  - - "~>"
107
52
  - !ruby/object:Gem::Version
108
53
  version: '1.4'
109
- - !ruby/object:Gem::Dependency
110
- name: rake
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '13.0'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '13.0'
123
- - !ruby/object:Gem::Dependency
124
- name: rake-compiler
125
- requirement: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '1.1'
130
- type: :development
131
- prerelease: false
132
- version_requirements: !ruby/object:Gem::Requirement
133
- requirements:
134
- - - "~>"
135
- - !ruby/object:Gem::Version
136
- version: '1.1'
137
- - !ruby/object:Gem::Dependency
138
- name: rake-compiler-dock
139
- requirement: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - "~>"
142
- - !ruby/object:Gem::Version
143
- version: '1.1'
144
- type: :development
145
- prerelease: false
146
- version_requirements: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - "~>"
149
- - !ruby/object:Gem::Version
150
- version: '1.1'
151
- - !ruby/object:Gem::Dependency
152
- name: rexical
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - "~>"
156
- - !ruby/object:Gem::Version
157
- version: 1.0.5
158
- type: :development
159
- prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - "~>"
163
- - !ruby/object:Gem::Version
164
- version: 1.0.5
165
- - !ruby/object:Gem::Dependency
166
- name: rubocop
167
- requirement: !ruby/object:Gem::Requirement
168
- requirements:
169
- - - "~>"
170
- - !ruby/object:Gem::Version
171
- version: '1.7'
172
- type: :development
173
- prerelease: false
174
- version_requirements: !ruby/object:Gem::Requirement
175
- requirements:
176
- - - "~>"
177
- - !ruby/object:Gem::Version
178
- version: '1.7'
179
- - !ruby/object:Gem::Dependency
180
- name: simplecov
181
- requirement: !ruby/object:Gem::Requirement
182
- requirements:
183
- - - "~>"
184
- - !ruby/object:Gem::Version
185
- version: '0.20'
186
- type: :development
187
- prerelease: false
188
- version_requirements: !ruby/object:Gem::Requirement
189
- requirements:
190
- - - "~>"
191
- - !ruby/object:Gem::Version
192
- version: '0.20'
193
- - !ruby/object:Gem::Dependency
194
- name: yard
195
- requirement: !ruby/object:Gem::Requirement
196
- requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '0.9'
200
- type: :development
201
- prerelease: false
202
- version_requirements: !ruby/object:Gem::Requirement
203
- requirements:
204
- - - "~>"
205
- - !ruby/object:Gem::Version
206
- version: '0.9'
54
+ force_ruby_platform: false
207
55
  description: |
208
56
  Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby. It provides a
209
57
  sensible, easy-to-understand API for reading, writing, modifying, and querying documents. It is
210
- fast and standards-compliant by relying on native parsers like libxml2 (C) and xerces (Java).
58
+ fast and standards-compliant by relying on native parsers like libxml2, libgumbo, or xerces.
211
59
  email: nokogiri-talk@googlegroups.com
212
60
  executables:
213
61
  - nokogiri
@@ -311,9 +159,9 @@ files:
311
159
  - gumbo-parser/src/error.h
312
160
  - gumbo-parser/src/foreign_attrs.c
313
161
  - gumbo-parser/src/foreign_attrs.gperf
314
- - gumbo-parser/src/gumbo.h
315
162
  - gumbo-parser/src/insertion_mode.h
316
163
  - gumbo-parser/src/macros.h
164
+ - gumbo-parser/src/nokogiri_gumbo.h
317
165
  - gumbo-parser/src/parser.c
318
166
  - gumbo-parser/src/parser.h
319
167
  - gumbo-parser/src/replacement.h
@@ -341,6 +189,7 @@ files:
341
189
  - gumbo-parser/src/vector.c
342
190
  - gumbo-parser/src/vector.h
343
191
  - lib/nokogiri.rb
192
+ - lib/nokogiri/class_resolver.rb
344
193
  - lib/nokogiri/css.rb
345
194
  - lib/nokogiri/css/node.rb
346
195
  - lib/nokogiri/css/parser.rb
@@ -351,6 +200,7 @@ files:
351
200
  - lib/nokogiri/css/tokenizer.rex
352
201
  - lib/nokogiri/css/xpath_visitor.rb
353
202
  - lib/nokogiri/decorators/slop.rb
203
+ - lib/nokogiri/encoding_handler.rb
354
204
  - lib/nokogiri/extension.rb
355
205
  - lib/nokogiri/gumbo.rb
356
206
  - lib/nokogiri/html.rb
@@ -360,6 +210,7 @@ files:
360
210
  - lib/nokogiri/html4/document_fragment.rb
361
211
  - lib/nokogiri/html4/element_description.rb
362
212
  - lib/nokogiri/html4/element_description_defaults.rb
213
+ - lib/nokogiri/html4/encoding_reader.rb
363
214
  - lib/nokogiri/html4/entity_lookup.rb
364
215
  - lib/nokogiri/html4/sax/parser.rb
365
216
  - lib/nokogiri/html4/sax/parser_context.rb
@@ -369,6 +220,7 @@ files:
369
220
  - lib/nokogiri/html5/document_fragment.rb
370
221
  - lib/nokogiri/html5/node.rb
371
222
  - lib/nokogiri/jruby/dependencies.rb
223
+ - lib/nokogiri/jruby/nokogiri_jars.rb
372
224
  - lib/nokogiri/syntax_error.rb
373
225
  - lib/nokogiri/version.rb
374
226
  - lib/nokogiri/version/constant.rb
@@ -416,14 +268,10 @@ files:
416
268
  - patches/libxml2/0001-Remove-script-macro-support.patch
417
269
  - patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch
418
270
  - patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch
419
- - patches/libxml2/0004-use-glibc-strlen.patch
420
- - patches/libxml2/0005-avoid-isnan-isinf.patch
421
- - patches/libxml2/0006-update-automake-files-for-arm64.patch
422
- - patches/libxml2/0007-Fix-XPath-recursion-limit.patch
271
+ - patches/libxml2/0009-allow-wildcard-namespaces.patch
423
272
  - patches/libxslt/0001-update-automake-files-for-arm64.patch
424
- - patches/libxslt/0002-Fix-xml2-config-check-in-configure-script.patch
425
- - ports/archives/libxml2-2.9.12.tar.gz
426
- - ports/archives/libxslt-1.1.34.tar.gz
273
+ - ports/archives/libxml2-2.10.4.tar.xz
274
+ - ports/archives/libxslt-1.1.37.tar.xz
427
275
  homepage: https://nokogiri.org
428
276
  licenses:
429
277
  - MIT
@@ -433,6 +281,7 @@ metadata:
433
281
  documentation_uri: https://nokogiri.org/rdoc/index.html
434
282
  changelog_uri: https://nokogiri.org/CHANGELOG.html
435
283
  source_code_uri: https://github.com/sparklemotion/nokogiri
284
+ rubygems_mfa_required: 'true'
436
285
  post_install_message:
437
286
  rdoc_options:
438
287
  - "--main"
@@ -443,14 +292,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
443
292
  requirements:
444
293
  - - ">="
445
294
  - !ruby/object:Gem::Version
446
- version: 2.5.0
295
+ version: 2.7.0
447
296
  required_rubygems_version: !ruby/object:Gem::Requirement
448
297
  requirements:
449
298
  - - ">="
450
299
  - !ruby/object:Gem::Version
451
300
  version: '0'
452
301
  requirements: []
453
- rubygems_version: 3.2.22
302
+ rubygems_version: 3.4.10
454
303
  signing_key:
455
304
  specification_version: 4
456
305
  summary: Nokogiri (鋸) makes it easy and painless to work with XML and HTML from Ruby.
@@ -1,53 +0,0 @@
1
- From c94172d2a4451368530db2186190d70be8a1d9e5 Mon Sep 17 00:00:00 2001
2
- From: Ilya Zub <ilya@serpapi.com>
3
- Date: Wed, 23 Dec 2020 12:45:29 +0200
4
- Subject: Use glibc strlen to speed up xmlStrlen
5
- MIME-Version: 1.0
6
- Content-Type: text/plain; charset=UTF-8
7
- Content-Transfer-Encoding: 8bit
8
-
9
- xmlStrlen (entire HTML file): 926171.936981 μs
10
- glibc_xmlStrlen (entire HTML file): 36905.903992 μs
11
- delta (xmlStrlen ÷ glibc_xmlStrlen): 25.094584 times
12
-
13
- xmlStrlen (average string): 57479.204010 μs
14
- glibc_xmlStrlen (average string): 5802.069000 μs
15
- delta (xmlStrlen ÷ glibc_xmlStrlen): 9.905937 times
16
-
17
- xmlStrlen (bigger string): 388056.315979 μs
18
- glibc_xmlStrlen (bigger string): 12797.856995 μs
19
- delta (xmlStrlen ÷ glibc_xmlStrlen): 30.318382 times
20
-
21
- xmlStrlen (smallest string): 15870.046021 μs
22
- glibc_xmlStrlen (smallest string): 6282.208984 μs
23
- delta (xmlStrlen ÷ glibc_xmlStrlen): 2.527903 times
24
-
25
- See https://gitlab.gnome.org/GNOME/libxml2/-/issues/212 for reference.
26
- ---
27
- xmlstring.c | 9 ++-------
28
- 1 file changed, 2 insertions(+), 7 deletions(-)
29
-
30
- diff --git a/xmlstring.c b/xmlstring.c
31
- index e8a1e45d..df247dff 100644
32
- --- a/xmlstring.c
33
- +++ b/xmlstring.c
34
- @@ -423,14 +423,9 @@ xmlStrsub(const xmlChar *str, int start, int len) {
35
-
36
- int
37
- xmlStrlen(const xmlChar *str) {
38
- - int len = 0;
39
- -
40
- if (str == NULL) return(0);
41
- - while (*str != 0) { /* non input consuming */
42
- - str++;
43
- - len++;
44
- - }
45
- - return(len);
46
- +
47
- + return strlen((const char*)str);
48
- }
49
-
50
- /**
51
- --
52
- 2.29.2
53
-
@@ -1,81 +0,0 @@
1
- This patch is a result of rake-compiler-dock using centos 7 (manylinux2014) to cross-compile.
2
-
3
- Centos, for reasons I have not been able to discern, implements `isnan` and `isinf` as a function
4
- and not as a macro. Debian knows how to resolve that function at dynamic-link time (despite using a
5
- macro at compile time), but musl-based systems (like alpine) do not. Running `nm` on nokogiri.so
6
- created on such a centos system shows:
7
-
8
- ```
9
- U __isinf@@GLIBC_2.2.5
10
- U __isnan@@GLIBC_2.2.5
11
- ```
12
-
13
- (see https://github.com/sparklemotion/nokogiri/pull/2142 for more info)
14
-
15
- This patch avoids using glibc's `isnan` and `isinf` calls, instead using libxml2's fallback
16
- implementation. There's history here, see libxml2 commit 8813f39:
17
-
18
- commit 8813f39
19
- Author: Nick Wellnhofer <wellnhofer@aevum.de>
20
- Date: 2017-09-21 00:11:26 +0200
21
-
22
- Simplify XPath NaN, inf and -0 handling
23
-
24
- Use C99 macros NAN, INFINITY, isnan, isinf. If they're not available:
25
-
26
- - Assume that (0.0 / 0.0) generates a NaN and !(x == x) tests for NaN.
27
- - Use C89's HUGE_VAL for INFINITY.
28
-
29
- Remove manual handling of NaN, infinity and negative zero in functions
30
- xmlXPathValueFlipSign and xmlXPathDivValues.
31
-
32
- Remove xmlXPathGetSign. All the tests for negative zero can be replaced
33
- with a test for negative or positive zero.
34
-
35
- Simplify xmlXPathRoundFunction.
36
-
37
- Remove Trio dependency.
38
-
39
- This should work on IEEE 754 compliant implementations even if the C99
40
- macros aren't available, but will likely break some ancient platforms.
41
- If problems arise, my plan is to port the relevant trionan.c solution
42
- to xpath.c. Note that non-compliant implementations are impossible
43
- to fully support, anyway, since XPath requires IEEE 754.
44
-
45
- This patch would be unnecessary if any of the following was true:
46
-
47
- * centos implements these as macros, and doesn't generate an unresolved symbol for either in the shared library
48
- * we had a way to ensure `__isinf` and `__isnan` resolve on musl (e.g., we implement them locally)
49
-
50
- diff --git a/xpath.c b/xpath.c
51
- index 9f64ab9..5b6d999 100644
52
- --- a/xpath.c
53
- +++ b/xpath.c
54
- @@ -515,11 +515,7 @@ xmlXPathInit(void) {
55
- */
56
- int
57
- xmlXPathIsNaN(double val) {
58
- -#ifdef isnan
59
- - return isnan(val);
60
- -#else
61
- return !(val == val);
62
- -#endif
63
- }
64
-
65
- /**
66
- @@ -530,15 +530,11 @@ xmlXPathIsNaN(double val) {
67
- */
68
- int
69
- xmlXPathIsInf(double val) {
70
- -#ifdef isinf
71
- - return isinf(val) ? (val > 0 ? 1 : -1) : 0;
72
- -#else
73
- if (val >= xmlXPathPINF)
74
- return 1;
75
- if (val <= -xmlXPathPINF)
76
- return -1;
77
- return 0;
78
- -#endif
79
- }
80
-
81
- #endif /* SCHEMAS or XPATH */