[PATCH] introduce xmalloc and xrealloc
Introduce xmalloc and xrealloc to die gracefully with a descriptive message when out of memory, rather than taking a SIGSEGV. Signed-off-by: Christopher Li<chrislgit@chrisli.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
f2a19340ad
commit
812666c8e6
@ -36,8 +36,8 @@ static int index_fd(unsigned char *sha1, int fd, struct stat *st)
|
||||
z_stream stream;
|
||||
unsigned long size = st->st_size;
|
||||
int max_out_bytes = size + 200;
|
||||
void *out = malloc(max_out_bytes);
|
||||
void *metadata = malloc(200);
|
||||
void *out = xmalloc(max_out_bytes);
|
||||
void *metadata = xmalloc(200);
|
||||
int metadata_size;
|
||||
void *in;
|
||||
SHA_CTX c;
|
||||
@ -123,7 +123,7 @@ static int add_file_to_cache(char *path)
|
||||
}
|
||||
namelen = strlen(path);
|
||||
size = cache_entry_size(namelen);
|
||||
ce = malloc(size);
|
||||
ce = xmalloc(size);
|
||||
memset(ce, 0, size);
|
||||
memcpy(ce->name, path, namelen);
|
||||
fill_stat_cache_info(ce, &st);
|
||||
@ -206,7 +206,7 @@ static struct cache_entry *refresh_entry(struct cache_entry *ce)
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
size = ce_size(ce);
|
||||
updated = malloc(size);
|
||||
updated = xmalloc(size);
|
||||
memcpy(updated, ce, size);
|
||||
fill_stat_cache_info(updated, &st);
|
||||
return updated;
|
||||
@ -282,7 +282,7 @@ static int add_cacheinfo(char *arg1, char *arg2, char *arg3)
|
||||
|
||||
len = strlen(arg3);
|
||||
size = cache_entry_size(len);
|
||||
ce = malloc(size);
|
||||
ce = xmalloc(size);
|
||||
memset(ce, 0, size);
|
||||
|
||||
memcpy(ce->sha1, sha1, 20);
|
||||
|
Reference in New Issue
Block a user