proxmark3/client/deps/jansson/memory.c

64 lines
1.3 KiB
C
Raw Normal View History

2018-11-12 21:00:35 +08:00
/*
* Copyright (c) 2009-2016 Petri Lehtinen <petri@digip.org>
* Copyright (c) 2011-2012 Basile Starynkevitch <basile@starynkevitch.net>
*
* Jansson is free software; you can redistribute it and/or modify it
* under the terms of the MIT license. See LICENSE for details.
*/
#include <stdlib.h>
#include <string.h>
#include "jansson.h"
#include "jansson_private.h"
/* C89 allows these to be macros */
#undef malloc
#undef free
/* memory function pointers */
static json_malloc_t do_malloc = malloc;
static json_free_t do_free = free;
void *jsonp_malloc(size_t size) {
2019-03-10 07:00:59 +08:00
if (!size)
2018-11-12 21:00:35 +08:00
return NULL;
return (*do_malloc)(size);
}
void jsonp_free(void *ptr) {
2019-03-10 07:00:59 +08:00
if (!ptr)
2018-11-12 21:00:35 +08:00
return;
(*do_free)(ptr);
}
char *jsonp_strdup(const char *str) {
2018-11-12 21:00:35 +08:00
return jsonp_strndup(str, strlen(str));
}
char *jsonp_strndup(const char *str, size_t len) {
2018-11-12 21:00:35 +08:00
char *new_str;
new_str = jsonp_malloc(len + 1);
2019-03-10 07:00:59 +08:00
if (!new_str)
2018-11-12 21:00:35 +08:00
return NULL;
memcpy(new_str, str, len);
new_str[len] = '\0';
return new_str;
}
void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn) {
2018-11-12 21:00:35 +08:00
do_malloc = malloc_fn;
do_free = free_fn;
}
void json_get_alloc_funcs(json_malloc_t *malloc_fn, json_free_t *free_fn) {
2018-11-12 21:00:35 +08:00
if (malloc_fn)
*malloc_fn = do_malloc;
if (free_fn)
*free_fn = do_free;
}