aboutsummaryrefslogtreecommitdiffstats
path: root/tree.c
diff options
context:
space:
mode:
authorChristopher Li <git@chrisli.org>2005-04-26 12:00:58 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-26 12:00:58 -0700
commit812666c8e66a21e668c0789d0422aa5a7db54961 (patch)
treeb98a096f4b3c70aac3110f905a1367c23b402cca /tree.c
parentf2a19340ada1188e278d5b198d3466ed7411e2d4 (diff)
downloadgit-812666c8e66a21e668c0789d0422aa5a7db54961.tar.gz
[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>
Diffstat (limited to 'tree.c')
-rw-r--r--tree.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tree.c b/tree.c
index 26b7927080..15a16d5606 100644
--- a/tree.c
+++ b/tree.c
@@ -9,7 +9,7 @@ static int read_one_entry(unsigned char *sha1, const char *base, int baselen, co
{
int len = strlen(pathname);
unsigned int size = cache_entry_size(baselen + len);
- struct cache_entry *ce = malloc(size);
+ struct cache_entry *ce = xmalloc(size);
memset(ce, 0, size);
@@ -39,7 +39,7 @@ static int read_tree_recursive(void *buffer, unsigned long size,
if (S_ISDIR(mode)) {
int retval;
int pathlen = strlen(path);
- char *newbase = malloc(baselen + 1 + pathlen);
+ char *newbase = xmalloc(baselen + 1 + pathlen);
void *eltbuf;
char elttype[20];
unsigned long eltsize;
@@ -74,7 +74,7 @@ struct tree *lookup_tree(unsigned char *sha1)
{
struct object *obj = lookup_object(sha1);
if (!obj) {
- struct tree *ret = malloc(sizeof(struct tree));
+ struct tree *ret = xmalloc(sizeof(struct tree));
memset(ret, 0, sizeof(struct tree));
created_object(sha1, &ret->object);
ret->object.type = tree_type;
@@ -116,7 +116,7 @@ int parse_tree(struct tree *item)
sscanf(bufptr, "%o", &mode) != 1)
return -1;
- entry = malloc(sizeof(struct tree_entry_list));
+ entry = xmalloc(sizeof(struct tree_entry_list));
entry->name = strdup(path + 1);
entry->directory = S_ISDIR(mode);
entry->executable = mode & S_IXUSR;