@@ -309,7 +309,7 @@ swap(bam_rec &a, bam_rec &b) {
309309static void
310310format (const string &cmd, const size_t n_threads, const string &inputfile,
311311 const string &outfile, const bool bam_format, const string &input_format,
312- const size_t suff_len, const size_t max_frag_len) {
312+ const size_t suff_len, const int32_t max_frag_len) {
313313 static const dnmt_error bam_write_err{" error writing bam" };
314314
315315 bamxx::bam_tpool tp (n_threads);
@@ -345,8 +345,7 @@ format(const string &cmd, const size_t n_threads, const string &inputfile,
345345 if (same_name (prev_aln, aln, suff_len)) {
346346 // below: essentially check for dovetail
347347 if (!bam_is_rev (aln)) swap (prev_aln, aln);
348- const size_t frag_len =
349- merge_mates (max_frag_len, prev_aln, aln, merged);
348+ const auto frag_len = merge_mates (max_frag_len, prev_aln, aln, merged);
350349 if (frag_len > 0 && frag_len < max_frag_len) {
351350 if (is_a_rich (merged)) flip_conversion (merged);
352351 if (!out.write (hdr, merged)) throw bam_write_err;
@@ -385,7 +384,7 @@ main_format(int argc, const char **argv) {
385384
386385 string input_format;
387386 string outfile;
388- int max_frag_len = std::numeric_limits< int >:: max () ;
387+ int32_t max_frag_len = 10000 ;
389388 size_t suff_len = 0 ;
390389 bool single_end = false ;
391390 bool VERBOSE = false ;
@@ -409,7 +408,7 @@ main_format(int argc, const char **argv) {
409408 opt_parse.add_opt (" single-end" , ' \0 ' ,
410409 " assume single-end [do not use with -suff]" , false ,
411410 single_end);
412- opt_parse.add_opt (" max-frag" , ' L' , " maximum allowed insert size" , false ,
411+ opt_parse.add_opt (" max-frag" , ' L' , " max allowed insert size" , false ,
413412 max_frag_len);
414413 opt_parse.add_opt (" check" , ' c' ,
415414 " check this many reads to validate read name suffix" ,
@@ -443,6 +442,12 @@ main_format(int argc, const char **argv) {
443442 << opt_parse.about_message () << endl;
444443 return EXIT_FAILURE;
445444 }
445+ if (max_frag_len <= 0 ) {
446+ cerr << " specified maximum fragment size: " << max_frag_len << endl
447+ << opt_parse.help_message () << endl
448+ << opt_parse.about_message () << endl;
449+ return EXIT_FAILURE;
450+ }
446451 const string infile (leftover_args.front ());
447452 if (leftover_args.size () == 2 && !use_stdout)
448453 outfile = leftover_args.back ();
0 commit comments