leptris 1.9.398.0-ppc64le-linux → 1.9.399.0-ppc64le-linux
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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/leptris/version.rb +1 -1
- data/lib/libleptris.so +0 -0
- data/vendor-src/README.md +1 -1
- data/vendor-src/libleptris/CHANGELOG.md +18 -0
- data/vendor-src/libleptris/CMakeLists.txt +1 -1
- data/vendor-src/libleptris/src/leptris/rng/rng_regex.c +11 -0
- data/vendor-src/libleptris/test/xsd/test_xsd_compile.cpp +29 -3
- data/vendor-src/libleptris/vcpkg.json +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d55789e61c6f09d49678b90ce8e0469f31321826e785bedab558a9fb1f156714
|
|
4
|
+
data.tar.gz: f86e140be30d39a32dac55ec30023e02d2574f3a01c55be178028638b3b0c27d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: efec64627ebc9d5b44733f805f277ef7babaf9f398161cd925aae33727106bddcd39d8d43ecba0ea16cbae52eb7c213ace356b02c76ee0e43fb50f7bdd144ecd
|
|
7
|
+
data.tar.gz: d210d588c9014297c7bd18c528eec55775cc4e006634b5321d96d44db328c6a94fde027eb37ff34d90b40bf0e62d714a0738f07708d08be889695727175c8e84
|
data/Rakefile
CHANGED
|
@@ -8,7 +8,7 @@ RSpec::Core::RakeTask.new(:spec)
|
|
|
8
8
|
# Pin for `rake compile` and the platform-gem builds. Keep in lockstep
|
|
9
9
|
# with .github/workflows/build.yml (which calls `rake compile`) and the
|
|
10
10
|
# CHANGELOG when libleptris releases.
|
|
11
|
-
LIBLEPTRIS_VERSION = "1.9.
|
|
11
|
+
LIBLEPTRIS_VERSION = "1.9.399"
|
|
12
12
|
# Vendored alongside libleptris for fn:normalize-unicode (TODO
|
|
13
13
|
# .restructure/20): built per platform with a RELOCATABLE @rpath
|
|
14
14
|
# install name, loaded by ffi.rb before libleptris so the
|
data/lib/leptris/version.rb
CHANGED
data/lib/libleptris.so
CHANGED
|
Binary file
|
data/vendor-src/README.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [1.9.399] - 2026-10-31
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **`\\d` matches the Unicode-3.1 legacy digits (leptris#1936,
|
|
8
|
+
PR #1940).** XSD 1.0 Part 2 cites Unicode 3.1, where
|
|
9
|
+
U+1369–U+1371 (Ethiopic digits one-nine) were Nd — Unicode 4.0.1
|
|
10
|
+
demoted them to No, so the utf8proc-backed Nd mask missed them
|
|
11
|
+
and the suite's reS38 (`\\d` vs `፱`) / reT51 (`\\D`) rows
|
|
12
|
+
failed. The legacy-Nd set now joins the class as a pure-codepoint
|
|
13
|
+
range, outside the utf8proc guard so every build (windows
|
|
14
|
+
included) answers it; `\\D` inherits the exclusion through the
|
|
15
|
+
complement's negation. RED-first spec
|
|
16
|
+
(`XsdDatatypes.DigitClassPinsLegacyNd`), and the shared-fixture
|
|
17
|
+
collision behind an arm-lane flake got unique names.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
3
21
|
## [1.9.398] - 2026-10-31
|
|
4
22
|
|
|
5
23
|
### Fixed
|
|
@@ -112,6 +112,17 @@ static void cls_add_builtin(RreNode* n, char c) {
|
|
|
112
112
|
n->cat_set = 1;
|
|
113
113
|
n->cat_mask |= 1u << UTF8PROC_CATEGORY_ND;
|
|
114
114
|
#endif
|
|
115
|
+
/* XSD 1.0 cites Unicode 3.1, where U+1369-1371
|
|
116
|
+
* (Ethiopic digits one-nine) were Nd — Unicode 4.0.1
|
|
117
|
+
* demoted them to No, so modern tables miss them
|
|
118
|
+
* (#1936 reS38/reT51). Pin the legacy-Nd set outside
|
|
119
|
+
* the utf8proc guard: the ranges are pure codepoints
|
|
120
|
+
* and \d must answer them on every build. */
|
|
121
|
+
if (n->uni_n < 4) {
|
|
122
|
+
n->uni_lo[n->uni_n] = 0x1369;
|
|
123
|
+
n->uni_hi[n->uni_n] = 0x1371;
|
|
124
|
+
n->uni_n++;
|
|
125
|
+
}
|
|
115
126
|
break;
|
|
116
127
|
case 'w':
|
|
117
128
|
for (int i = '0'; i <= '9'; i++) cls_add(n, (unsigned char)i);
|
|
@@ -390,6 +390,32 @@ TEST(XsdDatatypes, LengthFacetCountsOctetsForHexBinary) {
|
|
|
390
390
|
// byte world and character-class SUBTRACTION — the OPC
|
|
391
391
|
// ST_ContentType shape. A pattern that fails to parse rejects
|
|
392
392
|
// everything, so media types failed wholesale.
|
|
393
|
+
// leptris#1936 (reS38/reT51): XSD 1.0 cites Unicode 3.1, where
|
|
394
|
+
// U+1369-1371 (Ethiopic digits one-nine) were Nd — \\d matches
|
|
395
|
+
// ፱ and \\D rejects it even though the host tables (4.0.1+)
|
|
396
|
+
// carry them as No.
|
|
397
|
+
TEST(XsdDatatypes, DigitClassPinsLegacyNd) {
|
|
398
|
+
const char xsd[] =
|
|
399
|
+
"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">"
|
|
400
|
+
"<xs:simpleType name=\"Digs\"><xs:restriction base=\"xs:string\">"
|
|
401
|
+
"<xs:pattern value=\"\\d\"/></xs:restriction></xs:simpleType>"
|
|
402
|
+
"<xs:simpleType name=\"NonDigs\"><xs:restriction base=\"xs:string\">"
|
|
403
|
+
"<xs:pattern value=\"\\D\"/></xs:restriction></xs:simpleType>"
|
|
404
|
+
"</xs:schema>";
|
|
405
|
+
LeptrisStatus st = LEPTRIS_OK;
|
|
406
|
+
LeptrisXsdSchema s = leptris_xsd_compile(xsd, strlen(xsd), &st);
|
|
407
|
+
ASSERT_EQ(st, LEPTRIS_OK);
|
|
408
|
+
ASSERT_NE(s, (LeptrisXsdSchema)0);
|
|
409
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "\xE1\x8D\xB1"), 1);
|
|
410
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "\xE1\x8D\xA9"), 1);
|
|
411
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "5"), 1);
|
|
412
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "Digs", "x"), 0);
|
|
413
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "\xE1\x8D\xB1"), 0);
|
|
414
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "5"), 0);
|
|
415
|
+
EXPECT_EQ(leptris_xsd_simple_valid(s, "NonDigs", "x"), 1);
|
|
416
|
+
leptris_xsd_free(s);
|
|
417
|
+
}
|
|
418
|
+
|
|
393
419
|
TEST(XsdDatatypes, PatternPropertyClassesAndSubtraction) {
|
|
394
420
|
// The OPC ST_ContentType shape, minus the quoted-string member
|
|
395
421
|
// (same property-class + subtraction machinery): type/subtype
|
|
@@ -3816,7 +3842,7 @@ TEST(XsdCrossNs, SingleDocImportChaseResolves) {
|
|
|
3816
3842
|
" xmlns:r=\"urn:r\" xmlns=\"urn:a\" targetNamespace=\"urn:a\""
|
|
3817
3843
|
" elementFormDefault=\"qualified\">"
|
|
3818
3844
|
"<xs:import namespace=\"urn:r\""
|
|
3819
|
-
" schemaLocation=\"
|
|
3845
|
+
" schemaLocation=\"blip_chase_rel.xsd\"/>"
|
|
3820
3846
|
"<xs:attributeGroup name=\"AG_Blob\">"
|
|
3821
3847
|
"<xs:attribute ref=\"r:embed\" use=\"optional\"/>"
|
|
3822
3848
|
"</xs:attributeGroup>"
|
|
@@ -3832,8 +3858,8 @@ TEST(XsdCrossNs, SingleDocImportChaseResolves) {
|
|
|
3832
3858
|
if (!dir) dir = std::getenv("TEMP"); /* windows runners define TEMP/TMP */
|
|
3833
3859
|
if (!dir) dir = std::getenv("TMP");
|
|
3834
3860
|
std::string base = dir ? dir : ".";
|
|
3835
|
-
std::string rel_path = base + "/
|
|
3836
|
-
std::string main_path = base + "/
|
|
3861
|
+
std::string rel_path = base + "/blip_chase_rel.xsd";
|
|
3862
|
+
std::string main_path = base + "/blip_chase_main.xsd";
|
|
3837
3863
|
{
|
|
3838
3864
|
std::ofstream f(rel_path);
|
|
3839
3865
|
f << rel;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg/master/scripts/vcpkg.schema.json",
|
|
3
3
|
"name": "leptris",
|
|
4
|
-
"version": "1.9.
|
|
4
|
+
"version": "1.9.399",
|
|
5
5
|
"description": "High-performance XML parser and XPath 1.0 engine in C (libleptris)",
|
|
6
6
|
"homepage": "https://github.com/leptris/leptris",
|
|
7
7
|
"license": "MIT",
|