|
Boost-Commit : |
From: hartmut.kaiser_at_[hidden]
Date: 2008-07-10 09:42:19
Author: hkaiser
Date: 2008-07-10 09:42:18 EDT (Thu, 10 Jul 2008)
New Revision: 47286
URL: http://svn.boost.org/trac/boost/changeset/47286
Log:
Wave: Fixed ticket #2102
Text files modified:
trunk/boost/wave/cpplexer/cpp_lex_token.hpp | 3 ++-
trunk/boost/wave/grammars/cpp_expression_grammar.hpp | 14 +++++++++++---
2 files changed, 13 insertions(+), 4 deletions(-)
Modified: trunk/boost/wave/cpplexer/cpp_lex_token.hpp
==============================================================================
--- trunk/boost/wave/cpplexer/cpp_lex_token.hpp (original)
+++ trunk/boost/wave/cpplexer/cpp_lex_token.hpp 2008-07-10 09:42:18 EDT (Thu, 10 Jul 2008)
@@ -21,6 +21,7 @@
#include <boost/wave/token_ids.hpp>
#include <boost/wave/language_support.hpp>
+#include <boost/throw_exception.hpp>
#include <boost/pool/singleton_pool.hpp>
// this must occur after all of the includes and before any code appears
@@ -147,7 +148,7 @@
void *ret = pool_type::malloc();
if (0 == ret)
- throw std::bad_alloc();
+ boost::throw_exception(std::bad_alloc());
return ret;
}
Modified: trunk/boost/wave/grammars/cpp_expression_grammar.hpp
==============================================================================
--- trunk/boost/wave/grammars/cpp_expression_grammar.hpp (original)
+++ trunk/boost/wave/grammars/cpp_expression_grammar.hpp 2008-07-10 09:42:18 EDT (Thu, 10 Jul 2008)
@@ -755,7 +755,10 @@
parse_info<iterator_type> hit(first);
closure_value result; // expression result
- try {
+#if !defined(BOOST_NO_EXCEPTIONS)
+ try
+#endif
+ {
expression_grammar g; // expression grammar
hit = parse (first, last, g[spirit_assign_actor(result)],
ch_p(T_SPACE) | ch_p(T_CCOMMENT) | ch_p(T_CPPCOMMENT));
@@ -768,6 +771,7 @@
expression = "<empty expression>";
BOOST_WAVE_THROW(preprocess_exception, ill_formed_expression,
expression.c_str(), act_pos);
+ return false;
}
else {
// as the if_block_status is false no errors will be reported
@@ -775,17 +779,20 @@
}
}
}
+#if !defined(BOOST_NO_EXCEPTIONS)
catch (boost::wave::preprocess_exception const& e) {
// expression is illformed
if (if_block_status) {
boost::throw_exception(e);
+ return false;
}
- else {
+ else {
// as the if_block_status is false no errors will be reported
return false;
}
}
-
+#endif
+
if (!hit.full) {
// The token list starts with a valid expression, but there remains
// something. If the remainder consists out of whitespace only, the
@@ -812,6 +819,7 @@
expression = "<empty expression>";
BOOST_WAVE_THROW(preprocess_exception, ill_formed_expression,
expression.c_str(), act_pos);
+ return false;
}
else {
// as the if_block_status is false no errors will be reported
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk