svn-git: Use binmode for reading/writing binary rev maps
Otherwise, there is a possible interaction with UTF-8 locales in
combination with PERL_UNICODE, resulting in "inconsistent size: 40" or
"read:"-type errors.
See also:
    perldoc -f binmode
    <http://perldoc.perl.org/perl581delta.html#UTF-8-no-longer-default-under-UTF-8-locales>
Signed-off-by: Michael Weber <michaelw@foldr.org>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
			
			
				maint
			
			
		
							parent
							
								
									a6f47b2be4
								
							
						
					
					
						commit
						4f7ec79708
					
				|  | @ -2506,6 +2506,7 @@ sub rebuild_from_rev_db { | ||||||
| 	my ($self, $path) = @_; | 	my ($self, $path) = @_; | ||||||
| 	my $r = -1; | 	my $r = -1; | ||||||
| 	open my $fh, '<', $path or croak "open: $!"; | 	open my $fh, '<', $path or croak "open: $!"; | ||||||
|  | 	binmode $fh or croak "binmode: $!"; | ||||||
| 	while (<$fh>) { | 	while (<$fh>) { | ||||||
| 		length($_) == 41 or croak "inconsistent size in ($_) != 41"; | 		length($_) == 41 or croak "inconsistent size in ($_) != 41"; | ||||||
| 		chomp($_); | 		chomp($_); | ||||||
|  | @ -2603,6 +2604,7 @@ sub rebuild { | ||||||
| sub _rev_map_set { | sub _rev_map_set { | ||||||
| 	my ($fh, $rev, $commit) = @_; | 	my ($fh, $rev, $commit) = @_; | ||||||
|  |  | ||||||
|  | 	binmode $fh or croak "binmode: $!"; | ||||||
| 	my $size = (stat($fh))[7]; | 	my $size = (stat($fh))[7]; | ||||||
| 	($size % 24) == 0 or croak "inconsistent size: $size"; | 	($size % 24) == 0 or croak "inconsistent size: $size"; | ||||||
|  |  | ||||||
|  | @ -2706,6 +2708,7 @@ sub rev_map_max { | ||||||
| 	my $map_path = $self->map_path; | 	my $map_path = $self->map_path; | ||||||
| 	stat $map_path or return $want_commit ? (0, undef) : 0; | 	stat $map_path or return $want_commit ? (0, undef) : 0; | ||||||
| 	sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!"; | 	sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!"; | ||||||
|  | 	binmode $fh or croak "binmode: $!"; | ||||||
| 	my $size = (stat($fh))[7]; | 	my $size = (stat($fh))[7]; | ||||||
| 	($size % 24) == 0 or croak "inconsistent size: $size"; | 	($size % 24) == 0 or croak "inconsistent size: $size"; | ||||||
|  |  | ||||||
|  | @ -2738,6 +2741,7 @@ sub rev_map_get { | ||||||
| 	return undef unless -e $map_path; | 	return undef unless -e $map_path; | ||||||
|  |  | ||||||
| 	sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!"; | 	sysopen(my $fh, $map_path, O_RDONLY) or croak "open: $!"; | ||||||
|  | 	binmode $fh or croak "binmode: $!"; | ||||||
| 	my $size = (stat($fh))[7]; | 	my $size = (stat($fh))[7]; | ||||||
| 	($size % 24) == 0 or croak "inconsistent size: $size"; | 	($size % 24) == 0 or croak "inconsistent size: $size"; | ||||||
|  |  | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Michael Weber
						Michael Weber