@@ -942,7 +942,7 @@ struct write_transaction_table_arg {
942
942
size_t updates_nr ;
943
943
size_t updates_alloc ;
944
944
size_t updates_expected ;
945
- unsigned int max_index ;
945
+ uint64_t max_index ;
946
946
};
947
947
948
948
struct reftable_transaction_data {
@@ -1020,6 +1020,7 @@ static int prepare_transaction_update(struct write_transaction_table_arg **out,
1020
1020
arg -> updates_nr = 0 ;
1021
1021
arg -> updates_alloc = 0 ;
1022
1022
arg -> updates_expected = 0 ;
1023
+ arg -> max_index = 0 ;
1023
1024
}
1024
1025
1025
1026
arg -> updates_expected ++ ;
@@ -1443,7 +1444,9 @@ static int write_transaction_table(struct reftable_writer *writer, void *cb_data
1443
1444
* multiple entries. Each entry will contain a different update_index,
1444
1445
* so set the limits accordingly.
1445
1446
*/
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 ;
1447
1450
1448
1451
for (i = 0 ; i < arg -> updates_nr ; i ++ ) {
1449
1452
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,
1632
1635
tx_data -> args -> max_index = transaction -> max_index ;
1633
1636
1634
1637
for (size_t i = 0 ; i < tx_data -> args_nr ; i ++ ) {
1638
+ tx_data -> args [i ].max_index = transaction -> max_index ;
1639
+
1635
1640
ret = reftable_addition_add (tx_data -> args [i ].addition ,
1636
1641
write_transaction_table , & tx_data -> args [i ]);
1637
1642
if (ret < 0 )
@@ -1766,7 +1771,9 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data)
1766
1771
deletion_ts = creation_ts = reftable_stack_next_update_index (arg -> be -> stack );
1767
1772
if (arg -> delete_old )
1768
1773
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 ;
1770
1777
1771
1778
/*
1772
1779
* 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,
2298
2305
if (ret <= 0 )
2299
2306
goto done ;
2300
2307
2301
- reftable_writer_set_limits (writer , ts , ts );
2308
+ ret = reftable_writer_set_limits (writer , ts , ts );
2309
+ if (ret < 0 )
2310
+ goto done ;
2302
2311
2303
2312
/*
2304
2313
* 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
2357
2366
uint64_t ts = reftable_stack_next_update_index (arg -> stack );
2358
2367
int ret ;
2359
2368
2360
- reftable_writer_set_limits (writer , ts , ts );
2369
+ ret = reftable_writer_set_limits (writer , ts , ts );
2370
+ if (ret < 0 )
2371
+ goto out ;
2361
2372
2362
2373
ret = reftable_stack_init_log_iterator (arg -> stack , & it );
2363
2374
if (ret < 0 )
@@ -2434,7 +2445,9 @@ static int write_reflog_expiry_table(struct reftable_writer *writer, void *cb_da
2434
2445
if (arg -> records [i ].value_type == REFTABLE_LOG_UPDATE )
2435
2446
live_records ++ ;
2436
2447
2437
- reftable_writer_set_limits (writer , ts , ts );
2448
+ ret = reftable_writer_set_limits (writer , ts , ts );
2449
+ if (ret < 0 )
2450
+ return ret ;
2438
2451
2439
2452
if (!is_null_oid (& arg -> update_oid )) {
2440
2453
struct reftable_ref_record ref = {0 };
0 commit comments