git_config_set: fix off-by-two
Currently, we are slightly overzealous When removing an entry from a config file of this form: [abc]a [xyz] key = value When calling `git config --unset abc.a` on this file, it leaves this (invalid) config behind: [ [xyz] key = value The reason is that we try to search for the beginning of the line (or for the end of the preceding section header on the same line) that defines abc.a, but as an optimization, we subtract 2 from the offset pointing just after the definition before we call find_beginning_of_line(). That function, however, *also* performs that optimization and promptly fails to find the section header correctly. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									d32eb83c1d
								
							
						
					
					
						commit
						83b7fd8771
					
				
							
								
								
									
										2
									
								
								config.c
								
								
								
								
							
							
						
						
									
										2
									
								
								config.c
								
								
								
								
							|  | @ -2624,7 +2624,7 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, | ||||||
| 			} else | 			} else | ||||||
| 				copy_end = find_beginning_of_line( | 				copy_end = find_beginning_of_line( | ||||||
| 					contents, contents_sz, | 					contents, contents_sz, | ||||||
| 					store.offset[i]-2, &new_line); | 					store.offset[i], &new_line); | ||||||
|  |  | ||||||
| 			if (copy_end > 0 && contents[copy_end-1] != '\n') | 			if (copy_end > 0 && contents[copy_end-1] != '\n') | ||||||
| 				new_line = 1; | 				new_line = 1; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Johannes Schindelin
						Johannes Schindelin