forked from lda/telodendria
Fixed some misc bugs I found while debugging a memory error.
This commit is contained in:
parent
5ca10f298a
commit
ead65e7334
5 changed files with 13 additions and 5 deletions
2
TODO.txt
2
TODO.txt
|
@ -59,7 +59,7 @@ Phase 2: Building a foundation
|
|||
[x] Allow logging to the syslog
|
||||
[ ] Fix bug where the socket stays open after quit.
|
||||
[ ] Figure out how to write unit tests for array/hashmap/etc
|
||||
[ ] Fix memory leaks
|
||||
[x] Fix memory leaks
|
||||
[ ] Make memory info access O(1)
|
||||
|
||||
Phase 3: Welcome to Matrix
|
||||
|
|
|
@ -82,6 +82,7 @@ HashMapGrow(HashMap * map)
|
|||
newEntries = Malloc(map->capacity * sizeof(HashMapBucket *));
|
||||
if (!newEntries)
|
||||
{
|
||||
map->capacity /= 2;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -424,7 +424,7 @@ HttpParamDecode(char *in)
|
|||
{
|
||||
/* Malformed param */
|
||||
Free(buf);
|
||||
Free(params);
|
||||
HashMapFree(params);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -90,11 +90,16 @@ MemoryAllocate(size_t size, const char *file, int line)
|
|||
}
|
||||
|
||||
void *
|
||||
MemoryReallocate(void *p, size_t size)
|
||||
MemoryReallocate(void *p, size_t size, const char *file, int line)
|
||||
{
|
||||
MemoryInfo *a;
|
||||
void *new = NULL;
|
||||
|
||||
if (!p)
|
||||
{
|
||||
return MemoryAllocate(size, file, line);
|
||||
}
|
||||
|
||||
pthread_mutex_lock(&lock);
|
||||
|
||||
a = lastAllocation;
|
||||
|
@ -107,6 +112,8 @@ MemoryReallocate(void *p, size_t size)
|
|||
{
|
||||
a->pointer = new;
|
||||
a->size = size;
|
||||
a->file = file;
|
||||
a->line = line;
|
||||
|
||||
if (hook)
|
||||
{
|
||||
|
|
|
@ -35,13 +35,13 @@ typedef enum MemoryAction
|
|||
} MemoryAction;
|
||||
|
||||
#define Malloc(x) MemoryAllocate(x, __FILE__, __LINE__)
|
||||
#define Realloc(x, s) MemoryReallocate(x, s)
|
||||
#define Realloc(x, s) MemoryReallocate(x, s, __FILE__, __LINE__)
|
||||
#define Free(x) MemoryFree(x)
|
||||
|
||||
typedef struct MemoryInfo MemoryInfo;
|
||||
|
||||
extern void *MemoryAllocate(size_t, const char *, int);
|
||||
extern void *MemoryReallocate(void *, size_t);
|
||||
extern void *MemoryReallocate(void *, size_t, const char *, int);
|
||||
extern void MemoryFree(void *);
|
||||
|
||||
extern size_t MemoryAllocated(void);
|
||||
|
|
Loading…
Reference in a new issue