Opened 8 years ago
Closed 7 years ago
#10286 closed Bugs (obsolete)
Fail regex matching when dynamic linking boost_regex on FreeBSD 8 (9).
Reported by: | Owned by: | John Maddock | |
---|---|---|---|
Milestone: | To Be Determined | Component: | regex |
Version: | Boost 1.55.0 | Severity: | Problem |
Keywords: | Cc: |
Description
Simple example:
#include <boost/regex.hpp> #include <string> main(int, char *[]) { std::string filter_rules = "cause 16"; std::string::const_iterator start = filter_rules.begin(); std::string::const_iterator end = filter_rules.end(); std::string rule_pattern = "([a-z_]+).*"; boost::regex rule_re(rule_pattern, boost::regex::extended); boost::smatch what; regex_search(filter_rules, what, rule_re); std::string call_param = what[1]; std::string rule_operator = what[2]; std::string value = what[3]; printf("\n0: %s", call_param.c_str()); printf("\n1: %s", rule_operator.c_str()); printf("\n2: %s\n", value.c_str()); }
Static linking:
g++ test.cpp -o test -I/opt/boost/1.55.0/include /opt/boost/1.55.0/lib/libboost_regex.a
Results:
0: cause /* It's correct */
1:
2:
Dynamic linking:
g++ test.cpp -o test -I/opt/boost/1.55.0/include -L/opt/boost/1.55.0/lib -lboost_regex -Wl,-rpath,/opt/boost/1.55.0/lib
Results:
0: /* FAIL! */
1:
2:
It is manifested on FreeBSD 8 (9), architecture amd64.
Boost was builds with next parameters:
./bootstrap.sh \
--without-icu \
--without-libraries=coroutine,graph,graph_parallel,locale,log,math,mpi,random,test,wave \
--with-python=${py_dir}/bin/python
./b2 --disable-icu
Change History (2)
comment:1 by , 8 years ago
comment:2 by , 7 years ago
Resolution: | → obsolete |
---|---|
Status: | new → closed |
I'm afraid I don't have FreeBSD to test on. However, I note all the regression tests are passing for FreeBSD here: http://www.boost.org/development/tests/develop/developer/regex.html
My guess is that you have multiple Boost.Regex so's on your system and it's picking the wrong one at run time?