refs: use 'uint64_t' for 'ref_update.index'
The 'ref_update.index' variable is used to store an index for a given reference update. This index is used to order the updates in a predetermined order, while the default ordering is alphabetical as per the refname. For large repositories with millions of references, it should be safer to use 'uint64_t'. Let's do that. This also is applied for all other code sections where we store 'index' and pass it around. Reported-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									af47976cc0
								
							
						
					
					
						commit
						e7c1b9f123
					
				
							
								
								
									
										4
									
								
								refs.c
								
								
								
								
							
							
						
						
									
										4
									
								
								refs.c
								
								
								
								
							|  | @ -1331,7 +1331,7 @@ static int ref_transaction_update_reflog(struct ref_transaction *transaction, | ||||||
| 					 const char *committer_info, | 					 const char *committer_info, | ||||||
| 					 unsigned int flags, | 					 unsigned int flags, | ||||||
| 					 const char *msg, | 					 const char *msg, | ||||||
| 					 unsigned int index, | 					 uint64_t index, | ||||||
| 					 struct strbuf *err) | 					 struct strbuf *err) | ||||||
| { | { | ||||||
| 	struct ref_update *update; | 	struct ref_update *update; | ||||||
|  | @ -2813,7 +2813,7 @@ done: | ||||||
| } | } | ||||||
|  |  | ||||||
| struct reflog_migration_data { | struct reflog_migration_data { | ||||||
| 	unsigned int index; | 	uint64_t index; | ||||||
| 	const char *refname; | 	const char *refname; | ||||||
| 	struct ref_store *old_refs; | 	struct ref_store *old_refs; | ||||||
| 	struct ref_transaction *transaction; | 	struct ref_transaction *transaction; | ||||||
|  |  | ||||||
|  | @ -120,7 +120,7 @@ struct ref_update { | ||||||
| 	 * when migrating reflogs and we want to ensure we carry over the | 	 * when migrating reflogs and we want to ensure we carry over the | ||||||
| 	 * same order. | 	 * same order. | ||||||
| 	 */ | 	 */ | ||||||
| 	unsigned int index; | 	uint64_t index; | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| 	 * If this ref_update was split off of a symref update via | 	 * If this ref_update was split off of a symref update via | ||||||
|  | @ -203,7 +203,7 @@ struct ref_transaction { | ||||||
| 	enum ref_transaction_state state; | 	enum ref_transaction_state state; | ||||||
| 	void *backend_data; | 	void *backend_data; | ||||||
| 	unsigned int flags; | 	unsigned int flags; | ||||||
| 	unsigned int max_index; | 	uint64_t max_index; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  |  | ||||||
|  | @ -942,7 +942,7 @@ struct write_transaction_table_arg { | ||||||
| 	size_t updates_nr; | 	size_t updates_nr; | ||||||
| 	size_t updates_alloc; | 	size_t updates_alloc; | ||||||
| 	size_t updates_expected; | 	size_t updates_expected; | ||||||
| 	unsigned int max_index; | 	uint64_t max_index; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| struct reftable_transaction_data { | struct reftable_transaction_data { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Karthik Nayak
						Karthik Nayak