Fix pack-index issue on 64-bit platforms a bit more portably.
Apparently <stdint.h> is not enough for uint32_t on OpenBSD; use "unsigned int" -- hopefully that would stay 32-bit on every platform we care about, at least until we update the pack-index file format. Our sha1 routines optimized for architectures use uint32_t and expects '#include <stdint.h>' to be enough, so OpenBSD on arm or ppc might have similar issues down the road, I dunno. Signed-off-by: Junio C Hamano <junkio@cox.net>maint v1.3.3
							parent
							
								
									f3dd5eae58
								
							
						
					
					
						commit
						1b9bc5a7b7
					
				| 
						 | 
				
			
			@ -10,7 +10,6 @@
 | 
			
		|||
#include "tree-walk.h"
 | 
			
		||||
#include <sys/time.h>
 | 
			
		||||
#include <signal.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
static const char pack_usage[] = "git-pack-objects [-q] [--no-reuse-delta] [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -157,7 +156,7 @@ static void prepare_pack_revindex(struct pack_revindex *rix)
 | 
			
		|||
 | 
			
		||||
	rix->revindex = xmalloc(sizeof(unsigned long) * (num_ent + 1));
 | 
			
		||||
	for (i = 0; i < num_ent; i++) {
 | 
			
		||||
		uint32_t hl = *((uint32_t *)(index + 24 * i));
 | 
			
		||||
		unsigned int hl = *((unsigned int *)(index + 24 * i));
 | 
			
		||||
		rix->revindex[i] = ntohl(hl);
 | 
			
		||||
	}
 | 
			
		||||
	/* This knows the pack format -- the 20-byte trailer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,6 @@
 | 
			
		|||
#include "commit.h"
 | 
			
		||||
#include "tag.h"
 | 
			
		||||
#include "tree.h"
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
 | 
			
		||||
#ifndef O_NOATIME
 | 
			
		||||
#if defined(__linux__) && (defined(__i386__) || defined(__PPC__))
 | 
			
		||||
| 
						 | 
				
			
			@ -1127,7 +1126,7 @@ int find_pack_entry_one(const unsigned char *sha1,
 | 
			
		|||
		int mi = (lo + hi) / 2;
 | 
			
		||||
		int cmp = memcmp(index + 24 * mi + 4, sha1, 20);
 | 
			
		||||
		if (!cmp) {
 | 
			
		||||
			e->offset = ntohl(*((uint32_t *)(index + 24 * mi)));
 | 
			
		||||
			e->offset = ntohl(*((unsigned int *)(index + 24 * mi)));
 | 
			
		||||
			memcpy(e->sha1, sha1, 20);
 | 
			
		||||
			e->p = p;
 | 
			
		||||
			return 1;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue