Compare commits

...

110 Commits

Author SHA1 Message Date
957c390ead Release 1.48.0
[SVN r75495]
2011-11-15 15:44:44 +00:00
115a8fe837 Document release history.
[SVN r74978]
2011-10-16 16:51:56 +00:00
fe16f3f039 Merge accumulated minor fixes from Trunk.
[SVN r74964]
2011-10-16 12:19:37 +00:00
5a0f62f00c Merge minor fixes, plus updates to Unicode iterators to make them safe in the face of invalid input.
[SVN r74014]
2011-08-23 08:47:38 +00:00
490b3a6547 Merge ICU testing fixes from Trunk.
Authorized by Daniel James.

[SVN r72846]
2011-07-02 08:59:55 +00:00
bad2122f48 Merge documentation update for Boost.Regex.
[SVN r72016]
2011-05-17 11:00:38 +00:00
713264371b Merge minor fix, plus history update to docs from Trunk.
[SVN r71499]
2011-04-26 09:37:16 +00:00
afbb54c73b Merge minor fixes from Trunk.
[SVN r71483]
2011-04-25 17:13:42 +00:00
b267c55bc5 Update version number, fixes #5353.
[SVN r71477]
2011-04-25 09:33:51 +00:00
813e5f77e3 Merge minor regex lib fixes from Trunk.
[SVN r69625]
2011-03-07 13:23:36 +00:00
c499c62caa Update makefiles.
[SVN r67718]
2011-01-06 12:49:58 +00:00
ec3dbbf5d6 Change PDF URL to SF download page.
Merge 64-bit ICU Jamfile patch.

[SVN r67531]
2011-01-01 13:08:10 +00:00
7170423870 Merge fixes from Trunk.
Fixes #4721.

[SVN r66116]
2010-10-20 12:11:18 +00:00
cfedb49110 Merge fixes from Trunk - mainly warning suppression.
[SVN r65720]
2010-10-02 11:34:33 +00:00
09c9e93572 Fix typo and regenerate docs.
[SVN r64216]
2010-07-21 10:37:35 +00:00
ac2017ebc7 Update docs to match all the fixes applied to 1.44.
[SVN r64067]
2010-07-16 09:45:45 +00:00
4741ee7d94 Merge more rebuilt documentation.
[SVN r63771]
2010-07-08 23:13:28 +00:00
5fe36e6e56 Merge documentation fixes.
* Use `doc/src/*.css` instead of `doc/html/*.css`.
* Remove wiki and people directories.
* Some documentation fixes.
* Left out `minimal.css` changes and boostbook changes because of clashes.


[SVN r63347]
2010-06-26 12:30:09 +00:00
9529cb8bc0 Merged accumulated patches from Trunk.
[SVN r62831]
2010-06-12 08:30:11 +00:00
61f4b3360f Update version number in build scripts.
[SVN r61614]
2010-04-27 12:22:46 +00:00
fc6408426d Merge changes in Trunk:
Simplify regex_timer to eliminate regression failure.
  Rename extern "C" function to have a "boost_" prefix.
  Fix recursive-expression related bug, and update tests to match.

[SVN r58885]
2010-01-11 09:55:40 +00:00
e41acbc33f Merge recursive expressions performance update from Trunk.
Merge Makefile update from Trunk.
Merge history update.

[SVN r58542]
2009-12-28 13:07:04 +00:00
ae79f29895 Merge bug fixes from Trunk - see history for full details.
[SVN r58234]
2009-12-08 12:42:33 +00:00
95ddff1f01 Suppress gcc-4.4.1 warnings.
[SVN r57366]
2009-11-04 17:22:59 +00:00
d8c6fe7ce8 rm cmake from the release branch before it goes out broken. Policy dictates that you never commit to release, you commit to trunk and merge to release.
[SVN r56941]
2009-10-17 01:10:45 +00:00
438dcae4e4 Merge: Don't add leading slash to every path.
[SVN r55732]
2009-08-23 15:53:38 +00:00
7f89732479 Merge: Force shared runtime if using ICU.
[SVN r55699]
2009-08-21 16:55:51 +00:00
a3b2f4031d Merge updates from Trunk.
Fixes #2713.

[SVN r55383]
2009-08-03 12:00:07 +00:00
513a205564 Update version number.
[SVN r55269]
2009-07-29 17:21:36 +00:00
01eadc4ab6 Add basic copyright/license to keep cmake out of the inspection report
[SVN r55095]
2009-07-22 21:51:01 +00:00
be62e08702 Regex depends on Thread
[SVN r52816]
2009-05-07 04:37:40 +00:00
3b8aca5d8b Merge from trunk
[SVN r52379]
2009-04-14 08:33:45 +00:00
8f15600081 Windows CE does not define the wcscoll function from the CRT so, for WinCE, don't try to pull wcscoll from the global namespace into the std namespace.
[SVN r52222]
2009-04-06 21:37:24 +00:00
3e903e9c8e Merge PDF build changes from Trunk.
[SVN r51417]
2009-02-23 18:39:32 +00:00
083ea3a6c7 merge of cmake build files from trunk per beman
[SVN r50756]
2009-01-24 18:57:20 +00:00
2d43c1b305 Merge FreeBSD patch.
[SVN r50532]
2009-01-10 12:01:09 +00:00
e81f710567 Merge changes in Trunk.
[SVN r50499]
2009-01-07 13:19:32 +00:00
3b3a3ce6d1 Merged updated docs with some typo fixes, also adding missing makefile.
[SVN r49460]
2008-10-27 13:52:23 +00:00
5e4ccdf0cf Fix version names in makefiles.
[SVN r49360]
2008-10-16 12:59:28 +00:00
371ad14a3f Merge from trunk
[SVN r49356]
2008-10-16 09:01:02 +00:00
9219aa0b5b Merge inspection report fixes from Trunk: remove tabs.
[SVN r49285]
2008-10-11 16:18:15 +00:00
5471176846 Merge changes from Trunk ready for 1.37.
[SVN r48796]
2008-09-16 11:54:24 +00:00
756a875620 Merge doc fixes from trunk.
[SVN r47798]
2008-07-25 09:58:49 +00:00
b7d906dff5 Fixes #2097.
[SVN r47320]
2008-07-11 18:00:41 +00:00
a08e8b5c85 Merge changes from Trunk.
[SVN r47307]
2008-07-11 11:49:03 +00:00
9546df1f23 Rebuild a lot of documentation.
[SVN r43650]
2008-03-16 11:38:32 +00:00
b39edff796 Added missing files.
[SVN r43631]
2008-03-15 18:18:41 +00:00
788c8a8470 Merged doc fixes from Trunk.
[SVN r43352]
2008-02-21 13:23:29 +00:00
c527b20062 Merge fix fix for inspect issue.
[SVN r43149]
2008-02-07 10:27:23 +00:00
a65bccab1c Merge TR1 patches for VC9 + MS TR1 implementation from main Trunk.
[SVN r42761]
2008-01-14 13:47:39 +00:00
8fffb1250e Fix doc typos.
[SVN r42748]
2008-01-14 10:06:29 +00:00
069e845239 Merge bug fixes from main Trunk: these fix security issues reported by Will Drewry.
[SVN r42746]
2008-01-14 09:53:42 +00:00
79d7e84f26 Merged typo fixes from trunk.
[SVN r42026]
2007-12-14 10:16:35 +00:00
45891854d9 Merged fixes for #1471 (warning suppression).
[SVN r41974]
2007-12-11 17:29:58 +00:00
a159bacf3f Merge fixes for #1455.
[SVN r41972]
2007-12-11 17:26:26 +00:00
97daf0f81f Bring into synch with Trunk, and fix regression.
[SVN r41895]
2007-12-08 17:37:40 +00:00
dc01b7833e Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
2007-11-25 18:38:02 +00:00
ff95eb8d98 Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
c48d7bb478 Recreate release branch from fixed 1.34.1 tag.
[SVN r40341]
2007-10-23 06:42:50 +00:00
3cd2b52030 Move Attic files back into their rightful places
[SVN r40311]
2007-10-23 01:47:48 +00:00
f5af9ba18d Starting point for releases
[SVN r39706]
2007-10-05 14:25:06 +00:00
3e68fcb703 This commit was manufactured by cvs2svn to create tag
'Version_1_34_1'.

[SVN r38286]
2007-07-24 19:28:14 +00:00
1fe19b815a Ticket #583.
[SVN r37901]
2007-06-05 17:28:18 +00:00
d44bf8c41d Improve ICU support. See http://svn.boost.org/trac/boost/ticket/976
[SVN r37741]
2007-05-22 17:24:25 +00:00
5b9e134fc4 Added links to PDF docs.
[SVN r37653]
2007-05-09 17:20:56 +00:00
2643fcb245 Ooops, fix version check.
[SVN r37115]
2007-02-28 17:18:33 +00:00
7ac90de75a Oops, get the namespace right.
[SVN r37111]
2007-02-28 10:08:29 +00:00
2ebe6d4ec7 Patches for HP aCC and Compaq tru64
[SVN r37106]
2007-02-27 10:13:14 +00:00
b93dc9c301 Change asserts to tests.
[SVN r37080]
2007-02-26 09:46:39 +00:00
1b0ab17df9 Reduce thread load so test completes faster.
[SVN r37061]
2007-02-25 10:37:25 +00:00
07016623eb Fixed if...else logic and added cygwin to the list of compilers that need to be statically linked.
[SVN r36984]
2007-02-17 12:22:49 +00:00
4c56f3c14e Only static linking works with mingw
[SVN r36888]
2007-02-04 10:20:33 +00:00
95e3612e72 Fix workaround version.
[SVN r36732]
2007-01-15 11:09:44 +00:00
fdf8aa83ec Update bbv2 instructions.
Update Jamfile with better ICU support.


[SVN r36691]
2007-01-11 17:22:38 +00:00
c1722ff3de Disable typeid useage with VC6.
[SVN r36592]
2007-01-05 13:25:04 +00:00
77e43136d1 bbv2 updates.
[SVN r36551]
2006-12-31 17:26:12 +00:00
f5449c38a6 This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r36550]
2006-12-31 17:25:40 +00:00
5654efcf98 Fix for grep and egrep syntax types, plus tests.
[SVN r36470]
2006-12-20 17:19:25 +00:00
8d5985ce42 Typo fix
[SVN r36465]
2006-12-20 09:45:03 +00:00
bb8f057d6c Fix for msvc-6 in multithreaded test mode.
[SVN r36344]
2006-12-12 09:57:35 +00:00
9002d01f75 Remove obsolete Boost.Build v1 files.
[SVN r35880]
2006-11-06 17:10:46 +00:00
b057d0f943 Update heuristics used to determine max state count, following a bug report from SAP.
Updated tests to match.


[SVN r35656]
2006-10-18 12:56:45 +00:00
67128fa65f Remove and update aCC/HPUX fixes.
Fix regex bug report: some repeats match when they should not.
Added test case.


[SVN r35262]
2006-09-21 18:30:27 +00:00
9fc486658f Updated aCC config.
Removed aCC workarounds that are no longer needed.


[SVN r34938]
2006-08-24 11:00:19 +00:00
f4d849ec8f Trivial fix: macro not correctly bracketed.
[SVN r34878]
2006-08-12 17:51:24 +00:00
db4120e46d Fixed const-correctness bugs.
[SVN r34785]
2006-07-30 16:14:16 +00:00
c4d064add8 Added additional thread safety tests.
[SVN r34775]
2006-07-29 16:02:56 +00:00
65347f0f7f Improved const correctness, fixed thread safety bug.
[SVN r34774]
2006-07-29 16:01:48 +00:00
d3b885e20b Disable new test for VC6.
[SVN r34744]
2006-07-26 17:00:36 +00:00
60b6dbf275 Test case for bug report 1526472.
[SVN r34682]
2006-07-23 17:32:03 +00:00
443a498845 Fairly trivial patch for bug report 1526472.
[SVN r34680]
2006-07-23 17:30:49 +00:00
7a3a6dc7c6 manual merge from trunk: minor code fixes; fixed typos reported in http://bugs.debian.org/378016
[SVN r34636]
2006-07-20 13:54:08 +00:00
37b39f6635 manual merge from trunk: fixed license reference text; added final slash to boost url; fixed typos reported in http://bugs.debian.org/378016
[SVN r34634]
2006-07-20 13:44:08 +00:00
b473011375 Added needed license info.
[SVN r34563]
2006-07-16 17:24:25 +00:00
0a998e8bc8 stripped tabs from file.
[SVN r34560]
2006-07-16 16:06:38 +00:00
eb93be73eb Bug fix.
[SVN r34495]
2006-07-10 09:46:27 +00:00
eb791cd1c3 Non-greedy repeat tests from https://sourceforge.net/tracker/index.php?func=detail&aid=1515830&group_id=7586&atid=107586
[SVN r34494]
2006-07-10 09:41:12 +00:00
5928770c46 Fix for non-greedy repeats see https://sourceforge.net/tracker/index.php?func=detail&aid=1515830&group_id=7586&atid=107586
[SVN r34493]
2006-07-10 09:40:35 +00:00
2d6fea3308 Allow match_results::position() to return a valid value for partial matches.
[SVN r34324]
2006-06-17 12:48:03 +00:00
b58521163b Changed test names to prevent directory/test name conflict.
[SVN r34221]
2006-06-07 16:38:23 +00:00
921b0d758e Don't apply fix to VC7.
[SVN r34060]
2006-05-22 17:50:33 +00:00
dae6cbfead Added extra tests for non-greedy repeats to verify bug fix.
Updated history.


[SVN r34031]
2006-05-19 13:17:00 +00:00
17a038b672 Fix for partial matches and non-greedy repeats.
[SVN r34030]
2006-05-19 13:16:09 +00:00
ccc52a8a63 Fix for duplicate symbol errors when using VC7.1 without /Zc:wchar_t
[SVN r33706]
2006-04-15 17:21:19 +00:00
01cc2aaa50 Fixed silly bug in example.
[SVN r33609]
2006-04-09 10:07:08 +00:00
4370fe4607 Added no_except docs.
[SVN r33585]
2006-04-07 10:21:19 +00:00
171749f440 Added guards for managed code and __fastcall
[SVN r33557]
2006-04-05 12:22:36 +00:00
c1c2058d3d Suppress gcc -Wshadow warnings.
[SVN r33425]
2006-03-21 18:35:17 +00:00
1a732d8c6a Updated makefiles to 1.34
[SVN r33424]
2006-03-21 18:30:27 +00:00
f0ae398ada This commit was manufactured by cvs2svn to create branch 'RC_1_34_0'.
[SVN r33417]
2006-03-21 02:26:31 +00:00
18 changed files with 156 additions and 74 deletions

View File

@ -15,6 +15,13 @@ Currently open issues can be viewed [@https://svn.boost.org/trac/boost/query?sta
All issues including closed ones can be viewed [@https://svn.boost.org/trac/boost/query?status=assigned&status=closed&status=new&status=reopened&component=regex&order=priority&col=id&col=summary&col=status&col=type&col=milestone&col=component here].
[h4 Boost-1.48]
Fixed issues:
[@https://svn.boost.org/trac/boost/ticket/688 #698], [@https://svn.boost.org/trac/boost/ticket/5835 #5835],
[@https://svn.boost.org/trac/boost/ticket/5958 #5958], [@https://svn.boost.org/trac/boost/ticket/5736 #5736].
[h4 Boost 1.47]
Fixed issues:

View File

@ -35,6 +35,16 @@
<p>
All issues including closed ones can be viewed <a href="https://svn.boost.org/trac/boost/query?status=assigned&amp;status=closed&amp;status=new&amp;status=reopened&amp;component=regex&amp;order=priority&amp;col=id&amp;col=summary&amp;col=status&amp;col=type&amp;col=milestone&amp;col=component" target="_top">here</a>.
</p>
<a name="boost_regex.background_information.history.boost_1_48"></a><h5>
<a name="boost_regex.background_information.history.boost_1_48-heading"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_48">Boost-1.48</a>
</h5>
<p>
Fixed issues: <a href="https://svn.boost.org/trac/boost/ticket/688" target="_top">#698</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5835" target="_top">#5835</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5958" target="_top">#5958</a>,
<a href="https://svn.boost.org/trac/boost/ticket/5736" target="_top">#5736</a>.
</p>
<a name="boost_regex.background_information.history.boost_1_47"></a><h5>
<a name="boost_regex.background_information.history.boost_1_47-heading"></a>
<a class="link" href="history.html#boost_regex.background_information.history.boost_1_47">Boost

View File

@ -325,7 +325,7 @@
<code class="computeroutput"><span class="identifier">basic_regex</span></code>.
</p>
<div class="table">
<a name="id1071160"></a><p class="title"><b>Table&#160;1.&#160;basic_regex default construction postconditions</b></p>
<a name="id1070109"></a><p class="title"><b>Table&#160;1.&#160;basic_regex default construction postconditions</b></p>
<div class="table-contents"><table class="table" summary="basic_regex default construction postconditions">
<colgroup>
<col>
@ -403,7 +403,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1071458"></a><p class="title"><b>Table&#160;2.&#160;Postconditions for basic_regex construction</b></p>
<a name="id1070408"></a><p class="title"><b>Table&#160;2.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup>
<col>
@ -506,7 +506,7 @@
specified in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1071875"></a><p class="title"><b>Table&#160;3.&#160;Postconditions for basic_regex construction</b></p>
<a name="id1070825"></a><p class="title"><b>Table&#160;3.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup>
<col>
@ -608,7 +608,7 @@
according the option flags specified in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1072283"></a><p class="title"><b>Table&#160;4.&#160;Postconditions for basic_regex construction</b></p>
<a name="id1071233"></a><p class="title"><b>Table&#160;4.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup>
<col>
@ -716,7 +716,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1072760"></a><p class="title"><b>Table&#160;5.&#160;Postconditions for basic_regex construction</b></p>
<a name="id1071710"></a><p class="title"><b>Table&#160;5.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup>
<col>
@ -816,7 +816,7 @@
flags</a> specified in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1073122"></a><p class="title"><b>Table&#160;6.&#160;Postconditions for basic_regex construction</b></p>
<a name="id1072072"></a><p class="title"><b>Table&#160;6.&#160;Postconditions for basic_regex construction</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex construction">
<colgroup>
<col>
@ -1002,7 +1002,7 @@
in <span class="emphasis"><em>f</em></span>.
</p>
<div class="table">
<a name="id1075141"></a><p class="title"><b>Table&#160;7.&#160;Postconditions for basic_regex::assign</b></p>
<a name="id1074091"></a><p class="title"><b>Table&#160;7.&#160;Postconditions for basic_regex::assign</b></p>
<div class="table-contents"><table class="table" summary="Postconditions for basic_regex::assign">
<colgroup>
<col>

View File

@ -28,7 +28,7 @@
</h3></div></div></div>
<div><p class="copyright">Copyright &#169; 1998-2010 John Maddock</p></div>
<div><div class="legalnotice">
<a name="id1028452"></a><p>
<a name="id1026993"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>
@ -198,7 +198,7 @@
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: July 21, 2011 at 09:38:30 GMT</small></p></td>
<td align="left"><p><small>Last revised: October 16, 2011 at 12:24:31 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>

View File

@ -251,7 +251,7 @@ inline u32regex do_make_u32regex(InputIterator i,
const boost::mpl::int_<1>*)
{
typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
return u32regex(conv_type(i), conv_type(j), opt);
return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
}
template <class InputIterator>
@ -261,7 +261,7 @@ inline u32regex do_make_u32regex(InputIterator i,
const boost::mpl::int_<2>*)
{
typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
return u32regex(conv_type(i), conv_type(j), opt);
return u32regex(conv_type(i, i, j), conv_type(j, i, j), opt);
}
template <class InputIterator>
@ -282,7 +282,7 @@ inline u32regex do_make_u32regex(InputIterator i,
typedef boost::u8_to_u32_iterator<InputIterator, UChar32> conv_type;
typedef std::vector<UChar32> vector_type;
vector_type v;
conv_type a(i), b(j);
conv_type a(i, i, j), b(j, i, j);
while(a != b)
{
v.push_back(*a);
@ -302,7 +302,7 @@ inline u32regex do_make_u32regex(InputIterator i,
typedef boost::u16_to_u32_iterator<InputIterator, UChar32> conv_type;
typedef std::vector<UChar32> vector_type;
vector_type v;
conv_type a(i), b(j);
conv_type a(i, i, j), b(j, i, j);
while(a != b)
{
v.push_back(*a);
@ -425,7 +425,7 @@ bool do_regex_match(BidiIterator first, BidiIterator last,
typedef match_results<conv_type> match_type;
typedef typename match_type::allocator_type alloc_type;
match_type what;
bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
// copy results across to m:
if(result) copy_results(m, what);
return result;
@ -441,7 +441,7 @@ bool do_regex_match(BidiIterator first, BidiIterator last,
typedef match_results<conv_type> match_type;
typedef typename match_type::allocator_type alloc_type;
match_type what;
bool result = ::boost::regex_match(conv_type(first), conv_type(last), what, e, flags);
bool result = ::boost::regex_match(conv_type(first, first, last), conv_type(last, first, last), what, e, flags);
// copy results across to m:
if(result) copy_results(m, what);
return result;
@ -600,7 +600,7 @@ bool do_regex_search(BidiIterator first, BidiIterator last,
typedef match_results<conv_type> match_type;
typedef typename match_type::allocator_type alloc_type;
match_type what;
bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
// copy results across to m:
if(result) copy_results(m, what);
return result;
@ -617,7 +617,7 @@ bool do_regex_search(BidiIterator first, BidiIterator last,
typedef match_results<conv_type> match_type;
typedef typename match_type::allocator_type alloc_type;
match_type what;
bool result = ::boost::regex_search(conv_type(first), conv_type(last), what, e, flags, conv_type(base));
bool result = ::boost::regex_search(conv_type(first, first, last), conv_type(last, first, last), what, e, flags, conv_type(base));
// copy results across to m:
if(result) copy_results(m, what);
return result;

View File

@ -1226,7 +1226,7 @@ void basic_regex_creator<charT, traits>::create_startmap(re_syntax_base* state,
for(unsigned int i = 0; i < (1u << CHAR_BIT); ++i)
{
charT c = static_cast<charT>(i);
if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<mask_type>*>(state), *m_pdata, m_icase))
if(&c != re_is_set_member(&c, &c + 1, static_cast<re_set_long<mask_type>*>(state), *m_pdata, l_icase))
l_map[i] |= mask;
}
}

View File

@ -842,7 +842,15 @@ OutputIterator regex_format_imp(OutputIterator out,
BOOST_MPL_HAS_XXX_TRAIT_DEF(const_iterator)
struct any_type { any_type(...); };
struct any_type
{
template <class T>
any_type(const T&);
template <class T, class U>
any_type(const T&, const U&);
template <class T, class U, class V>
any_type(const T&, const U&, const V&);
};
typedef char no_type;
typedef char (&unary_type)[2];
typedef char (&binary_type)[3];

View File

@ -21,6 +21,7 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
#include "internals.hpp"
#if !BOOST_WORKAROUND(__BORLANDC__, < 0x560)
@ -107,26 +108,6 @@ c_regex_traits<char>::string_type BOOST_REGEX_CALL c_regex_traits<char>::transfo
return result;
}
enum
{
char_class_space=1<<0,
char_class_print=1<<1,
char_class_cntrl=1<<2,
char_class_upper=1<<3,
char_class_lower=1<<4,
char_class_alpha=1<<5,
char_class_digit=1<<6,
char_class_punct=1<<7,
char_class_xdigit=1<<8,
char_class_alnum=char_class_alpha|char_class_digit,
char_class_graph=char_class_alnum|char_class_punct,
char_class_blank=1<<9,
char_class_word=1<<10,
char_class_unicode=1<<11,
char_class_horizontal=1<<12,
char_class_vertical=1<<13
};
c_regex_traits<char>::char_class_type BOOST_REGEX_CALL c_regex_traits<char>::lookup_classname(const char* p1, const char* p2)
{
static const char_class_type masks[] =

View File

@ -361,11 +361,24 @@ void BuildFileList(std::list<std::string>* pl, const char* files, bool recurse)
while(dstart != dend)
{
// Verify that sprintf will not overflow:
if(std::strlen(dstart.path()) + std::strlen(directory_iterator::separator()) + std::strlen(ptr) >= MAX_PATH)
{
// Oops overflow, skip this item:
++dstart;
continue;
}
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
(::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
int r = (::sprintf_s)(buf, sizeof(buf), "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
#else
(std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
int r = (std::sprintf)(buf, "%s%s%s", dstart.path(), directory_iterator::separator(), ptr);
#endif
if(r < 0)
{
// sprintf failed, skip this item:
++dstart;
continue;
}
BuildFileList(pl, buf, recurse);
++dstart;
}

View File

@ -847,10 +847,16 @@ bool iswild(const char* mask, const char* name)
unsigned _fi_attributes(const char* root, const char* name)
{
char buf[MAX_PATH];
// verify that we can not overflow:
if(std::strlen(root) + std::strlen(_fi_sep) + std::strlen(name) >= MAX_PATH)
return 0;
int r;
if( ( (root[0] == *_fi_sep) || (root[0] == *_fi_sep_alt) ) && (root[1] == '\0') )
(std::sprintf)(buf, "%s%s", root, name);
r = (std::sprintf)(buf, "%s%s", root, name);
else
(std::sprintf)(buf, "%s%s%s", root, _fi_sep, name);
r = (std::sprintf)(buf, "%s%s%s", root, _fi_sep, name);
if(r < 0)
return 0; // sprintf failed
DIR* d = opendir(buf);
if(d)
{

35
src/internals.hpp Normal file
View File

@ -0,0 +1,35 @@
/*
*
* Copyright (c) 2011
* John Maddock
*
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*
*/
#ifndef BOOST_REGEX_SRC_INTERNALS_HPP
#define BOOST_REGEX_SRC_INTERNALS_HPP
enum
{
char_class_space=1<<0,
char_class_print=1<<1,
char_class_cntrl=1<<2,
char_class_upper=1<<3,
char_class_lower=1<<4,
char_class_alpha=1<<5,
char_class_digit=1<<6,
char_class_punct=1<<7,
char_class_xdigit=1<<8,
char_class_alnum=char_class_alpha|char_class_digit,
char_class_graph=char_class_alnum|char_class_punct,
char_class_blank=1<<9,
char_class_word=1<<10,
char_class_unicode=1<<11,
char_class_horizontal=1<<12,
char_class_vertical=1<<13
};
#endif // BOOST_REGEX_SRC_INTERNALS_HPP

View File

@ -167,11 +167,17 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorA(int code, const regex_tA*
{
if(std::strcmp(e->re_endp, names[i]) == 0)
{
//
// We're converting an integer i to a string, and since i <= REG_E_UNKNOWN
// a five character string is *always* large enough:
//
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400) && !defined(_WIN32_WCE) && !defined(UNDER_CE)
(::sprintf_s)(localbuf, 5, "%d", i);
int r = (::sprintf_s)(localbuf, 5, "%d", i);
#else
(std::sprintf)(localbuf, "%d", i);
int r = (std::sprintf)(localbuf, "%d", i);
#endif
if(r < 0)
return 0; // sprintf failed
if(std::strlen(localbuf) < buf_size)
re_detail::strcpy_s(buf, buf_size, localbuf);
return std::strlen(localbuf) + 1;

View File

@ -22,6 +22,7 @@
#include <boost/detail/workaround.hpp>
#include <memory>
#include <string>
#include "internals.hpp"
#if defined(_DLL_CPPLIB) && !defined(_M_CEE_PURE) && defined(_NATIVE_WCHAR_T_DEFINED) \
&& !(defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION) || defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER))\
@ -147,26 +148,6 @@ c_regex_traits<wchar_t>::string_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::t
return result;
}
enum
{
char_class_space=1<<0,
char_class_print=1<<1,
char_class_cntrl=1<<2,
char_class_upper=1<<3,
char_class_lower=1<<4,
char_class_alpha=1<<5,
char_class_digit=1<<6,
char_class_punct=1<<7,
char_class_xdigit=1<<8,
char_class_alnum=char_class_alpha|char_class_digit,
char_class_graph=char_class_alnum|char_class_punct,
char_class_blank=1<<9,
char_class_word=1<<10,
char_class_unicode=1<<11,
char_class_horizontal=1<<12,
char_class_vertical=1<<13
};
c_regex_traits<wchar_t>::char_class_type BOOST_REGEX_CALL c_regex_traits<wchar_t>::lookup_classname(const wchar_t* p1, const wchar_t* p2)
{
static const char_class_type masks[] =

View File

@ -74,7 +74,7 @@ const wchar_t* wnames[] = {
};
}
typedef boost::basic_regex<wchar_t, c_regex_traits<wchar_t> > c_regex_type;
typedef boost::basic_regex<wchar_t, c_regex_traits<wchar_t> > wc_regex_type;
BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wchar_t* ptr, int f)
{
@ -84,7 +84,7 @@ BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wcha
#ifndef BOOST_NO_EXCEPTIONS
try{
#endif
expression->guts = new c_regex_type();
expression->guts = new wc_regex_type();
#ifndef BOOST_NO_EXCEPTIONS
} catch(...)
{
@ -134,9 +134,9 @@ BOOST_REGEX_DECL int BOOST_REGEX_CCALL regcompW(regex_tW* expression, const wcha
try{
#endif
expression->re_magic = wmagic_value;
static_cast<c_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
expression->re_nsub = static_cast<c_regex_type*>(expression->guts)->mark_count() - 1;
result = static_cast<c_regex_type*>(expression->guts)->error_code();
static_cast<wc_regex_type*>(expression->guts)->set_expression(ptr, p2, flags);
expression->re_nsub = static_cast<wc_regex_type*>(expression->guts)->mark_count() - 1;
result = static_cast<wc_regex_type*>(expression->guts)->error_code();
#ifndef BOOST_NO_EXCEPTIONS
}
catch(const boost::regex_error& be)
@ -215,7 +215,7 @@ BOOST_REGEX_DECL regsize_t BOOST_REGEX_CCALL regerrorW(int code, const regex_tW*
{
std::string p;
if((e) && (e->re_magic == wmagic_value))
p = static_cast<c_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
p = static_cast<wc_regex_type*>(e->guts)->get_traits().error_string(static_cast< ::boost::regex_constants::error_type>(code));
else
{
p = re_detail::get_default_error_string(static_cast< ::boost::regex_constants::error_type>(code));
@ -264,7 +264,7 @@ BOOST_REGEX_DECL int BOOST_REGEX_CCALL regexecW(const regex_tW* expression, cons
#endif
if(expression->re_magic == wmagic_value)
{
result = regex_search(start, end, m, *static_cast<c_regex_type*>(expression->guts), flags);
result = regex_search(start, end, m, *static_cast<wc_regex_type*>(expression->guts), flags);
}
else
return result;
@ -301,7 +301,7 @@ BOOST_REGEX_DECL void BOOST_REGEX_CCALL regfreeW(regex_tW* expression)
{
if(expression->re_magic == wmagic_value)
{
delete static_cast<c_regex_type*>(expression->guts);
delete static_cast<wc_regex_type*>(expression->guts);
}
expression->re_magic = 0;
}

View File

@ -189,6 +189,8 @@ test-suite regex
;
compile test_consolidated.cpp ;
build-project ../example ;

View File

@ -216,6 +216,10 @@ void test_options2()
TEST_REGEX_SEARCH("(a(?i)b)c", perl, "ABc", match_default, make_array(-2, -2));
TEST_REGEX_SEARCH("(a(?i)b)c", perl, "ABC", match_default, make_array(-2, -2));
TEST_REGEX_SEARCH("(a(?i)b)c", perl, "AbC", match_default, make_array(-2, -2));
TEST_REGEX_SEARCH("(?i)[dh]og", perl, "hog", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(?i)[dh]og", perl, "dog", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(?i)[dh]og", perl, "Hog", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(?i)[dh]og", perl, "Dog", match_default, make_array(0, 3, -2, -2));
TEST_REGEX_SEARCH("(a(?i)B)c", perl, "abc", match_default, make_array(0, 3, 0, 2, -2, -2));
TEST_REGEX_SEARCH("(a(?i)B)c", perl, "aBc", match_default, make_array(0, 3, 0, 2, -2, -2));

View File

@ -0,0 +1,29 @@
/*
*
* Copyright (c) 2011
* John Maddock
*
* Use, modification and distribution are subject to the
* Boost Software License, Version 1.0. (See accompanying file
* LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
*
*/
#include <libs/regex/src/c_regex_traits.cpp>
#include <libs/regex/src/cpp_regex_traits.cpp>
#include <libs/regex/src/cregex.cpp>
#include <libs/regex/src/fileiter.cpp>
#include <libs/regex/src/icu.cpp>
#include <libs/regex/src/instances.cpp>
#include <libs/regex/src/posix_api.cpp>
#include <libs/regex/src/regex.cpp>
#include <libs/regex/src/regex_debug.cpp>
#include <libs/regex/src/regex_raw_buffer.cpp>
#include <libs/regex/src/regex_traits_defaults.cpp>
#include <libs/regex/src/static_mutex.cpp>
#include <libs/regex/src/usinstances.cpp>
#include <libs/regex/src/wc_regex_traits.cpp>
#include <libs/regex/src/w32_regex_traits.cpp>
#include <libs/regex/src/wide_posix_api.cpp>
#include <libs/regex/src/winstances.cpp>

View File

@ -30,7 +30,7 @@
template <class I>
typename I::value_type iterate_over(I a, I b)
{
typedef I::value_type value_type;
typedef typename I::value_type value_type;
value_type v = 0;
while(a != b)
{