1
0
Fork 0

07: C: Reduce malloc calls

This commit is contained in:
Mia Herkt 2022-12-07 21:44:06 +01:00
parent e1d55dda2e
commit 59bf88cb6b
Signed by: mia
GPG Key ID: 72E154B8622EC191
1 changed files with 10 additions and 5 deletions

View File

@ -6,8 +6,9 @@ typedef struct entry {
char *name;
int isdir;
size_t size;
struct entry **entries;
size_t n_entries;
size_t n_alloc;
struct entry **entries;
struct entry *parent;
} entry;
@ -22,10 +23,14 @@ entry *findent(entry *e, int isdir, const char *name) {
}
entry *addent(entry *parent, int isdir, const char *name) {
if (parent->n_entries)
parent->entries = realloc(parent->entries, ++(parent->n_entries) * sizeof(entry*));
else
parent->entries = malloc(++(parent->n_entries) * sizeof(entry*));
if (parent->n_entries >= parent->n_alloc) {
parent->n_alloc += 10;
if (parent->n_entries)
parent->entries = realloc(parent->entries, parent->n_alloc * sizeof(entry*));
else
parent->entries = malloc(parent->n_alloc * sizeof(entry*));
}
parent->n_entries++;
entry *e = parent->entries[parent->n_entries - 1] = calloc(1, sizeof(entry));
e->isdir = isdir;