@@ -825,8 +825,6 @@ static bool scan_and_store_the_field_value_and_eat_white(Bibtex* ctx, bool store
825825 } else { /*264: */
826826 field_loc field_ptr = entry_cite_ptr () * num_fields () + ilk_info (field_name_loc );
827827 if (field_ptr >= max_fields ()) {
828- puts_log ("entry_cite_ptr * num_fields + ilk_info[field_name_loc] >= max_fields\n" );
829- printf_log ("%d * %d + %d >= %d\n" , entry_cite_ptr (), num_fields (), ilk_info (field_name_loc ), max_fields ());
830828 puts_log ("field_info index is out of range" );
831829 print_confusion ();
832830 longjmp (error_jmpbuf , 1 );
@@ -3215,8 +3213,6 @@ static void execute_fn(ExecCtx* ctx, hash_loc ex_fn_loc)
32153213 else {
32163214 field_loc field_ptr = cite_ptr () * num_fields () + ilk_info (ex_fn_loc );
32173215 if (field_ptr >= max_fields ()) {
3218- puts_log ("cite_ptr * num_fields + ilk_info[ex_fn_loc] >= max_fields\n" );
3219- printf_log ("%d * %d + %d >= %d\n" , cite_ptr (), num_fields (), ilk_info (ex_fn_loc ), max_fields ());
32203216 puts_log ("field_info index is out of range" );
32213217 print_confusion ();
32223218 longjmp (error_jmpbuf , 1 );
@@ -4737,10 +4733,14 @@ static void bst_read_command(Bibtex* ctx)
47374733 set_num_cites (cite_ptr ());
47384734 ctx -> num_preamble_strings = preamble_ptr ();
47394735 {
4740- if ((num_cites () - 1 ) * num_fields () + crossref_num () >= max_fields ()) {
4741- puts_log ("First One\n" );
4742- puts_log ("(num_cites - 1) * num_fields + crossref_num >= max_fields\n" );
4743- printf_log ("(%d - 1) * %d + %d >= %d\n" , num_cites (), num_fields (), crossref_num (), max_fields ());
4736+ CiteNumber cites = num_cites ();
4737+ if cites > 0 {
4738+ cites -= 1 ;
4739+ }
4740+ if (cites * num_fields () + crossref_num () >= max_fields ()) {
4741+ // puts_log("First One\n");
4742+ // puts_log("(num_cites - 1) * num_fields + crossref_num >= max_fields\n");
4743+ // printf_log("(%d - 1) * %d + %d >= %d\n", num_cites(), num_fields(), crossref_num(), max_fields());
47444744 puts_log ("field_info index is out of range" );
47454745 print_confusion ();
47464746 longjmp (error_jmpbuf , 1 );
@@ -4771,10 +4771,14 @@ static void bst_read_command(Bibtex* ctx)
47714771 }
47724772 }
47734773 {
4774- if ((num_cites () - 1 ) * num_fields () + crossref_num () >= max_fields ()) {
4775- puts_log ("Second One\n" );
4776- puts_log ("(num_cites - 1) * num_fields + crossref_num >= max_fields\n" );
4777- printf_log ("(%d - 1) * %d + %d >= %d\n" , num_cites (), num_fields (), crossref_num (), max_fields ());
4774+ CiteNumber cites = num_cites ();
4775+ if cites > 0 {
4776+ cites -= 1 ;
4777+ }
4778+ if (cites * num_fields () + crossref_num () >= max_fields ()) {
4779+ // puts_log("Second One\n");
4780+ // puts_log("(num_cites - 1) * num_fields + crossref_num >= max_fields\n");
4781+ // printf_log("(%d - 1) * %d + %d >= %d\n", num_cites(), num_fields(), crossref_num(), max_fields());
47784782 puts_log ("field_info index is out of range" );
47794783 print_confusion ();
47804784 longjmp (error_jmpbuf , 1 );
@@ -4830,8 +4834,6 @@ static void bst_read_command(Bibtex* ctx)
48304834 } else if ((ctx -> all_entries ) || (cite_ptr () < old_num_cites ()) || (cite_info (cite_ptr ()) >= ctx -> config .min_crossrefs )) {
48314835 if (cite_ptr () > ctx -> cite_xptr ) { /*286: */
48324836 if ((ctx -> cite_xptr + 1 ) * num_fields () > max_fields ()) {
4833- puts_log ("(cite_xptr + 1) * num_fields > max_fields\n" );
4834- printf_log ("(%d + 1) * %d > %d\n" , ctx -> cite_xptr , num_fields (), max_fields ());
48354837 puts_log ("field_info index is out of range" );
48364838 print_confusion ();
48374839 longjmp (error_jmpbuf , 1 );
0 commit comments