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