Remove memcpy use
This commit is contained in:
11
src/arena.c
11
src/arena.c
@@ -1,14 +1,13 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "arena.h"
|
#include "arena.h"
|
||||||
#include "alloc_backend.h"
|
#include "alloc_backend.h"
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define ARENA_SIZE ((size_t)(128*sysconf(_SC_PAGE_SIZE)))
|
#define ARENA_SIZE ((size_t)(128*sysconf(_SC_PAGE_SIZE)))
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocates and returns new arena
|
* Allocates and returns new arena
|
||||||
*/
|
*/
|
||||||
@@ -21,15 +20,15 @@ struct arena* arena_new()
|
|||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
struct arena a = {
|
arena_t *a = (arena_t*)p;
|
||||||
|
|
||||||
|
*a = (arena_t){
|
||||||
.begin = p + sizeof(struct arena),
|
.begin = p + sizeof(struct arena),
|
||||||
.next = p + sizeof(struct arena),
|
.next = p + sizeof(struct arena),
|
||||||
.cap = size
|
.cap = size
|
||||||
};
|
};
|
||||||
|
|
||||||
memcpy(p, &a, sizeof a);
|
return (arena_t*)a;
|
||||||
|
|
||||||
return (struct arena*)p;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
11
src/arena.h
11
src/arena.h
@@ -2,18 +2,17 @@
|
|||||||
#ifndef ARENA_H
|
#ifndef ARENA_H
|
||||||
#define ARENA_H
|
#define ARENA_H
|
||||||
|
|
||||||
|
|
||||||
#include <stddef.h> // ptrdiff_t
|
#include <stddef.h> // ptrdiff_t
|
||||||
|
|
||||||
struct arena {
|
typedef struct arena {
|
||||||
unsigned char *begin,
|
unsigned char *begin,
|
||||||
*next;
|
*next;
|
||||||
ptrdiff_t cap;
|
ptrdiff_t cap;
|
||||||
};
|
} arena_t;
|
||||||
|
|
||||||
struct arena* arena_new();
|
arena_t* arena_new();
|
||||||
void arena_reset(struct arena *a);
|
void arena_reset(arena_t *a);
|
||||||
void* arena_alloc(struct arena *a, size_t len);
|
void* arena_alloc(arena_t *a, size_t len);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user