
Vladimir Prus wrote:
Matt Schuckmann wrote:
At some point many of my applications that use the boost.program_options libraries started crashing when they attempt to print the options descriptions i.e. cout << opt_desc;
I believe the problem started when we upgraded to boost 1.33.1 from 1.32.0 and were using MSVC 7.1. I'm not trying to figure out the problem using boost 1.33.1 using MSVC 8.0.
Here is the deal if I run the debug version of one of my apps with the standard --help option it runs fine. If I run the release version part of the help message is displayed but then the application crashes
If I attempt to debug the problem by launching the debug version of application from the MS debugger I get a debug assertion failed in xstring in a _SCL_SECURE_VALIDATE_RANGE check on operator += (basically the new secure checked iterators MS had introduced are complaining about an out of range iterator). Looking at the call stack the problem stemmed from line 361 of options_description.cpp (the format_paragraph function).
That specific issue is fixed in CVS HEAD (and RC_1_34_0) quite some time ago. Can you try that version and let me know if the problem is gone?
- Volodya
I got boost rc 1.34 built it and tested and it does now work with the code I provided above. I can't just upgrade to rc 1.34, I think I'd be shot by my co workers and boss. Is there a patch or fix I can apply to our 1.33.1 build? Thanks Matt S. PS I did run into another problem with an other command line program, the description for one of the parameters has multiple lines and some of those lines have 2 or more tabs to produce output like this -C [--compress] arg Compress input file to output file. Compression Types are 0 - No Compression 1 - little bit 2 - lots The option description looks like this in my code ("compress,C", po::value< int >(), "Compress input file to output file.\n" "\tCompression Types are\n." "\t\t0 - No compression\n" "\t\t1 - little bit\n" "\t\t2 - lots\n" ) The multiple tabs on the argument types lines are producing an exception with the description "Only one tab per paragraph is allowed" What is the reason for not allowing multiple tabs, and if multiple tabs truly can't be used how should one produce output with multiple levels of indentation? Thanks Matt S.