send-pack: always allocate receive status
In `receive_status()`, we record the reason why ref updates have been rejected by the remote via the `remote_status`. But while we allocate the assigned string when a reason was given, we assign a string constant when no reason was given. This has been working fine so far due to two reasons: - We don't ever free the refs in git-send-pack(1)' - Remotes always give a reason, at least as implemented by Git proper. Adapt the code to always allocate the receive status string and free the refs. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									e463c5e8a0
								
							
						
					
					
						commit
						5bd0851d97
					
				|  | @ -336,5 +336,7 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) | ||||||
| 		/* stable plumbing output; do not modify or localize */ | 		/* stable plumbing output; do not modify or localize */ | ||||||
| 		fprintf(stderr, "Everything up-to-date\n"); | 		fprintf(stderr, "Everything up-to-date\n"); | ||||||
|  |  | ||||||
|  | 	free_refs(remote_refs); | ||||||
|  | 	free_refs(local_refs); | ||||||
| 	return ret; | 	return ret; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -259,7 +259,7 @@ static int receive_status(struct packet_reader *reader, struct ref *refs) | ||||||
| 			if (p) | 			if (p) | ||||||
| 				hint->remote_status = xstrdup(p); | 				hint->remote_status = xstrdup(p); | ||||||
| 			else | 			else | ||||||
| 				hint->remote_status = "failed"; | 				hint->remote_status = xstrdup("failed"); | ||||||
| 		} else { | 		} else { | ||||||
| 			hint->status = REF_STATUS_OK; | 			hint->status = REF_STATUS_OK; | ||||||
| 			hint->remote_status = xstrdup_or_null(p); | 			hint->remote_status = xstrdup_or_null(p); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Patrick Steinhardt
						Patrick Steinhardt