[program_options] bug or not... change proposal
In my former post I wrote about assertions in program_options library... Since nobody answered I had to debug some boost::code. As I found out, current assertion of po relies in the following: in the function format_paragraph (option_description.cpp:365) is written: //... if (line_begin + (line_length - indent) > par_end) //... line_begin is of type std::string::const_iterator; line_length - indent is 51 in the last line only one word is written, which is shorter then 51 characters. By adding 51 to an iterator an assertion check is made, that the addition will produce an iterator out of string bounds. I know that iterators should behave like pointers, but in this case it is impossible to debug. Would be nice if some of boost developers decide to make a workaround. I will fix it locally. With Kind Regards, Ovanes Markarian
Ovanes Markarian a écrit :
In my former post I wrote about assertions in program_options library...
Since nobody answered I had to debug some boost::code. As I found out, current assertion of po relies in the following:
in the function format_paragraph (option_description.cpp:365) is written:
//... if (line_begin + (line_length - indent) > par_end) //...
line_begin is of type std::string::const_iterator;
line_length - indent is 51
in the last line only one word is written, which is shorter then 51 characters. By adding 51 to an iterator an assertion check is made, that the addition will produce an iterator out of string bounds.
I think I remember reading something about this problem in program_option. Have you checked latest CVS or in the dev mailing list ? -- Loïc
On Thu, August 10, 2006 13:04, Loïc Joly wrote:
Ovanes Markarian a écrit :
In my former post I wrote about assertions in program_options library...
Since nobody answered I had to debug some boost::code. As I found out, current assertion of po relies in the following:
in the function format_paragraph (option_description.cpp:365) is written:
//... if (line_begin + (line_length - indent) > par_end) //...
line_begin is of type std::string::const_iterator;
line_length - indent is 51
in the last line only one word is written, which is shorter then 51 characters. By adding 51 to an iterator an assertion check is made, that the addition will produce an iterator out of string bounds.
I think I remember reading something about this problem in program_option. Have you checked latest CVS or in the dev mailing list ?
-- Loïc
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Thanks for the reply. No I did not search the lists for this... May be I should. With Kind Regards, Ovanes Markarian
On Thu, August 10, 2006 13:04, Loïc Joly wrote:
Ovanes Markarian a écrit :
In my former post I wrote about assertions in program_options library...
Since nobody answered I had to debug some boost::code. As I found out, current assertion of po relies in the following:
in the function format_paragraph (option_description.cpp:365) is written:
//... if (line_begin + (line_length - indent) > par_end) //...
line_begin is of type std::string::const_iterator;
line_length - indent is 51
in the last line only one word is written, which is shorter then 51 characters. By adding 51 to an iterator an assertion check is made, that the addition will produce an iterator out of string bounds.
I think I remember reading something about this problem in program_option. Have you checked latest CVS or in the dev mailing list ?
-- Loïc
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
Thanks for the tip. In CVS it is fixed. With Kind Regards, Ovanes Markarian
participants (2)
-
Loïc Joly
-
Ovanes Markarian