Skip to content

Commit fedcc09

Browse files
committed
Merge pull request cpp-netlib#578 from TheAquaMan/master
XCode crash fix
2 parents 60d35b5 + 28a4b71 commit fedcc09

File tree

1 file changed

+87
-35
lines changed

1 file changed

+87
-35
lines changed

boost/network/uri/uri.ipp

+87-35
Original file line numberDiff line numberDiff line change
@@ -84,42 +84,92 @@ struct uri_grammar
8484
ipvfuture %=
8585
qi::lit('v') >> +qi::xdigit >> '.' >> +(unreserved | sub_delims | ':');
8686

87+
ipv6addresses[0] %= qi::repeat(6)[h16 >> ':'] >> ls32;
88+
ipv6addresses[1] %= "::" >> qi::repeat(5)[h16 >> ':'] >> ls32;
89+
ipv6addresses[2] %= -qi::raw[h16] >> "::" >> qi::repeat(4)[h16 >> ':']
90+
>> ls32;
91+
ipv6addresses[3] %= -qi::raw[h16] >> "::" >> qi::repeat(3)[h16 >> ':']
92+
>> ls32;
93+
ipv6addresses[4] %= -qi::raw[h16] >> "::" >> qi::repeat(2)[h16 >> ':']
94+
>> ls32;
95+
ipv6addresses[5] %= -qi::raw[h16] >> "::" >> h16 >> ':' >> ls32;
96+
ipv6addresses[6] %= -qi::raw[h16] >> "::" >> ls32;
97+
ipv6addresses[7] %= -qi::raw[h16] >> "::" >> h16;
98+
ipv6addresses[8] %= -qi::raw[h16] >> "::";
99+
ipv6addresses[9] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
100+
"::" >> qi::repeat(3)[h16 >> ':'] >> ls32;
101+
ipv6addresses[10] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
102+
"::" >> qi::repeat(2)[h16 >> ':'] >> ls32;
103+
ipv6addresses[11] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
104+
"::" >> h16 >> ':' >> ls32;
105+
ipv6addresses[12] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
106+
"::" >> ls32;
107+
ipv6addresses[13] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
108+
"::" >> h16;
109+
ipv6addresses[14] %= -qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >>
110+
"::";
111+
ipv6addresses[15] %= -qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >>
112+
"::" >> qi::repeat(2)[h16 >> ':'] >> ls32;
113+
ipv6addresses[16] %= -qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >>
114+
"::" >> h16 >> ':' >> ls32;
115+
ipv6addresses[17] %= -qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >>
116+
"::" >> ls32;
117+
ipv6addresses[18] %= -qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >>
118+
"::" >> h16;
119+
ipv6addresses[19] %= -qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >>
120+
"::";
121+
ipv6addresses[20] %= -qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >>
122+
"::" >> h16 >> ':' >> ls32;
123+
ipv6addresses[21] %= -qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >>
124+
"::" >> ls32;
125+
ipv6addresses[22] %= -qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >>
126+
"::" >> h16;
127+
ipv6addresses[23] %= -qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >>
128+
"::";
129+
ipv6addresses[24] %= -qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >>
130+
"::" >> ls32;
131+
ipv6addresses[25] %= -qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >>
132+
"::" >> h16;
133+
ipv6addresses[26] %= -qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >>
134+
"::";
135+
ipv6addresses[27] %= -qi::raw[qi::repeat(5)[(h16 >> ':')] >> h16] >>
136+
"::" >> h16;
137+
ipv6addresses[28] %= -qi::raw[qi::repeat(5)[(h16 >> ':')] >> h16] >>
138+
"::";
139+
ipv6addresses[29] %= -qi::raw[qi::repeat(6)[(h16 >> ':')] >> h16] >>
140+
"::";
141+
87142
ipv6address %= qi::raw
88-
[qi::repeat(6)[h16 >> ':'] >> ls32 |
89-
"::" >> qi::repeat(5)[h16 >> ':'] >> ls32 |
90-
-qi::raw[h16] >> "::" >> qi::repeat(4)[h16 >> ':'] >> ls32 |
91-
-qi::raw[h16] >> "::" >> qi::repeat(3)[h16 >> ':'] >> ls32 |
92-
-qi::raw[h16] >> "::" >> qi::repeat(2)[h16 >> ':'] >> ls32 |
93-
-qi::raw[h16] >> "::" >> h16 >> ':' >> ls32 |
94-
-qi::raw[h16] >> "::" >> ls32 | -qi::raw[h16] >> "::" >> h16 |
95-
-qi::raw[h16] >> "::" |
96-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" >>
97-
qi::repeat(3)[h16 >> ':'] >> ls32 |
98-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" >>
99-
qi::repeat(2)[h16 >> ':'] >> ls32 |
100-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" >> h16 >>
101-
':' >> ls32 |
102-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" >> ls32 |
103-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" >> h16 |
104-
-qi::raw[qi::repeat(1)[(h16 >> ':')] >> h16] >> "::" |
105-
-qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >> "::" >>
106-
qi::repeat(2)[h16 >> ':'] >> ls32 |
107-
-qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >> "::" >> h16 >>
108-
':' >> ls32 |
109-
-qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >> "::" >> ls32 |
110-
-qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >> "::" >> h16 |
111-
-qi::raw[qi::repeat(2)[(h16 >> ':')] >> h16] >> "::" |
112-
-qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >> "::" >> h16 >>
113-
':' >> ls32 |
114-
-qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >> "::" >> ls32 |
115-
-qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >> "::" >> h16 |
116-
-qi::raw[qi::repeat(3)[(h16 >> ':')] >> h16] >> "::" |
117-
-qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >> "::" >> ls32 |
118-
-qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >> "::" >> h16 |
119-
-qi::raw[qi::repeat(4)[(h16 >> ':')] >> h16] >> "::" |
120-
-qi::raw[qi::repeat(5)[(h16 >> ':')] >> h16] >> "::" >> h16 |
121-
-qi::raw[qi::repeat(5)[(h16 >> ':')] >> h16] >> "::" |
122-
-qi::raw[qi::repeat(6)[(h16 >> ':')] >> h16] >> "::"];
143+
[ipv6addresses[0] |
144+
ipv6addresses[1] |
145+
ipv6addresses[2] |
146+
ipv6addresses[3] |
147+
ipv6addresses[4] |
148+
ipv6addresses[5] |
149+
ipv6addresses[6] |
150+
ipv6addresses[7] |
151+
ipv6addresses[8] |
152+
ipv6addresses[9] |
153+
ipv6addresses[10] |
154+
ipv6addresses[11] |
155+
ipv6addresses[12] |
156+
ipv6addresses[13] |
157+
ipv6addresses[14] |
158+
ipv6addresses[15] |
159+
ipv6addresses[16] |
160+
ipv6addresses[17] |
161+
ipv6addresses[18] |
162+
ipv6addresses[19] |
163+
ipv6addresses[20] |
164+
ipv6addresses[21] |
165+
ipv6addresses[22] |
166+
ipv6addresses[23] |
167+
ipv6addresses[24] |
168+
ipv6addresses[25] |
169+
ipv6addresses[26] |
170+
ipv6addresses[27] |
171+
ipv6addresses[28] |
172+
ipv6addresses[29]];
123173

124174
// ls32 = ( h16 ":" h16 ) / IPv4address
125175
ls32 %= (h16 >> ':' >> h16) | ipv4address;
@@ -178,6 +228,8 @@ struct uri_grammar
178228
ipv6address, ipvfuture, ip_literal;
179229

180230
qi::rule<const_iterator, string_type()> h16, ls32;
231+
qi::rule<const_iterator, string_type()> ipv6addresses[30];
232+
181233

182234
qi::rule<const_iterator, iterator_range<const_iterator>()> host, port;
183235

0 commit comments

Comments
 (0)