Exemplo n.º 1
0
void *file_load(char const *file_name, size_t *len_)
{
    assert(file_name);
    SLOG(LOG_DEBUG, "Loading content of file '%s'", file_name);
    ssize_t len = file_size(file_name);
    if (len < 0) return NULL;
    if (len_) *len_ = len;

    if (len == 0) return NULL;

    MALLOCER(file_content);

    char *buf = MALLOC(file_content, len+1);
    if (! buf) {
        SLOG(LOG_ERR, "Cannot alloc for reading %zu bytes", len);
        return NULL;
    }

    int fd = file_open(file_name, O_RDONLY);
    if (fd < 0) goto err1;

    if (len != file_read(fd, buf, len)) goto err1;
    buf[len] = '\0';

    file_close(fd);

    return buf;

err1:
    FREE(buf);
    return NULL;
}
Exemplo n.º 2
0
Arquivo: sdp.c Projeto: krissg/junkie
static struct parser *sdp_parser_new(struct proto *proto, struct timeval const *now)
{
    MALLOCER(sdp_parsers);
    struct sdp_parser *sdp_parser = MALLOC(sdp_parsers, sizeof *sdp_parser);

    if (-1 == sdp_parser_ctor(sdp_parser, proto, now)) {
        FREE(sdp_parser);
        return NULL;
    }

    return &sdp_parser->parser;
}
Exemplo n.º 3
0
static void malloc_check(void)
{
    MALLOCER(test1);
    assert_empty(&mallocer_test1);
    // Can malloc and deref
    char *ptr = MALLOC(test1, 1);
    assert(ptr);
    ptr[1] = 'a';
    assert(mallocer_test1.tot_size == 1);
    assert(mallocer_test1.nb_blocks == 1);
    FREE(ptr);
    assert_empty(&mallocer_test1);

    // Can malloc(0) then free it
    ptr = MALLOC(test1, 0);
    FREE(ptr);
    assert_empty(&mallocer_test1);
}
Exemplo n.º 4
0
static void realloc_check(void)
{
    MALLOCER(test2);
    // Can resize down
    char *ptr = MALLOC(test2, 2);
    assert(ptr);
    ptr = REALLOC(test2, ptr, 1);
    assert(ptr);
    FREE(ptr);
    assert_empty(&mallocer_test2);

    // Resize to 0 means free
    ptr = MALLOC(test2, 1);
    REALLOC(test2, ptr, 0);
    assert_empty(&mallocer_test2);

    // Realloc of NULL means alloc
    ptr = REALLOC(test2, NULL, 1);
    assert(ptr);
    assert(mallocer_test2.tot_size == 1);
    FREE(ptr);
    assert_empty(&mallocer_test2);
}