@@ -942,7 +942,7 @@ struct write_transaction_table_arg {
942942	size_t  updates_nr ;
943943	size_t  updates_alloc ;
944944	size_t  updates_expected ;
945- 	unsigned  int max_index ;
945+ 	uint64_t  max_index ;
946946};
947947
948948struct  reftable_transaction_data  {
@@ -1020,6 +1020,7 @@ static int prepare_transaction_update(struct write_transaction_table_arg **out,
10201020		arg -> updates_nr  =  0 ;
10211021		arg -> updates_alloc  =  0 ;
10221022		arg -> updates_expected  =  0 ;
1023+ 		arg -> max_index  =  0 ;
10231024	}
10241025
10251026	arg -> updates_expected ++ ;
@@ -1443,7 +1444,9 @@ static int write_transaction_table(struct reftable_writer *writer, void *cb_data
14431444	 * multiple entries. Each entry will contain a different update_index, 
14441445	 * so set the limits accordingly. 
14451446	 */ 
1446- 	reftable_writer_set_limits (writer , ts , ts  +  arg -> max_index );
1447+ 	ret  =  reftable_writer_set_limits (writer , ts , ts  +  arg -> max_index );
1448+ 	if  (ret  <  0 )
1449+ 		goto done ;
14471450
14481451	for  (i  =  0 ; i  <  arg -> updates_nr ; i ++ ) {
14491452		struct  reftable_transaction_update  * tx_update  =  & arg -> updates [i ];
@@ -1632,6 +1635,8 @@ static int reftable_be_transaction_finish(struct ref_store *ref_store UNUSED,
16321635		tx_data -> args -> max_index  =  transaction -> max_index ;
16331636
16341637	for  (size_t  i  =  0 ; i  <  tx_data -> args_nr ; i ++ ) {
1638+ 		tx_data -> args [i ].max_index  =  transaction -> max_index ;
1639+ 
16351640		ret  =  reftable_addition_add (tx_data -> args [i ].addition ,
16361641					    write_transaction_table , & tx_data -> args [i ]);
16371642		if  (ret  <  0 )
@@ -1766,7 +1771,9 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data)
17661771	deletion_ts  =  creation_ts  =  reftable_stack_next_update_index (arg -> be -> stack );
17671772	if  (arg -> delete_old )
17681773		creation_ts ++ ;
1769- 	reftable_writer_set_limits (writer , deletion_ts , creation_ts );
1774+ 	ret  =  reftable_writer_set_limits (writer , deletion_ts , creation_ts );
1775+ 	if  (ret  <  0 )
1776+ 		goto done ;
17701777
17711778	/* 
17721779	 * Add the new reference. If this is a rename then we also delete the 
@@ -2298,7 +2305,9 @@ static int write_reflog_existence_table(struct reftable_writer *writer,
22982305	if  (ret  <= 0 )
22992306		goto done ;
23002307
2301- 	reftable_writer_set_limits (writer , ts , ts );
2308+ 	ret  =  reftable_writer_set_limits (writer , ts , ts );
2309+ 	if  (ret  <  0 )
2310+ 		goto done ;
23022311
23032312	/* 
23042313	 * The existence entry has both old and new object ID set to the 
@@ -2357,7 +2366,9 @@ static int write_reflog_delete_table(struct reftable_writer *writer, void *cb_da
23572366	uint64_t  ts  =  reftable_stack_next_update_index (arg -> stack );
23582367	int  ret ;
23592368
2360- 	reftable_writer_set_limits (writer , ts , ts );
2369+ 	ret  =  reftable_writer_set_limits (writer , ts , ts );
2370+ 	if  (ret  <  0 )
2371+ 		goto out ;
23612372
23622373	ret  =  reftable_stack_init_log_iterator (arg -> stack , & it );
23632374	if  (ret  <  0 )
@@ -2434,7 +2445,9 @@ static int write_reflog_expiry_table(struct reftable_writer *writer, void *cb_da
24342445		if  (arg -> records [i ].value_type  ==  REFTABLE_LOG_UPDATE )
24352446			live_records ++ ;
24362447
2437- 	reftable_writer_set_limits (writer , ts , ts );
2448+ 	ret  =  reftable_writer_set_limits (writer , ts , ts );
2449+ 	if  (ret  <  0 )
2450+ 		return  ret ;
24382451
24392452	if  (!is_null_oid (& arg -> update_oid )) {
24402453		struct  reftable_ref_record  ref  =  {0 };
0 commit comments