1 /* @nolint
2  * Copyright (c) 2009-2012 Petri Lehtinen <petri@digip.org>
3  * Copyright (c) 2011-2012 Basile Starynkevitch <basile@starynkevitch.net>
4  *
5  * Jansson is free software; you can redistribute it and/or modify it
6  * under the terms of the MIT license. See LICENSE for details.
7  */
8 
9 #include <stdlib.h>
10 #include <string.h>
11 
12 #include "jansson.h"
13 #include "jansson_private.h"
14 
15 /* memory function pointers */
16 static json_malloc_t do_malloc = malloc;
17 static json_free_t do_free = free;
18 
jsonp_malloc(size_t size)19 void *jsonp_malloc(size_t size)
20 {
21     if(!size)
22         return NULL;
23 
24     return (*do_malloc)(size);
25 }
26 
jsonp_free(void * ptr)27 void jsonp_free(void *ptr)
28 {
29     if(!ptr)
30         return;
31 
32     (*do_free)(ptr);
33 }
34 
jsonp_strdup(const char * str)35 char *jsonp_strdup(const char *str)
36 {
37     char *new_str;
38 
39     new_str = (char*)jsonp_malloc(strlen(str) + 1);
40     if(!new_str)
41         return NULL;
42 
43     strcpy(new_str, str);
44     return new_str;
45 }
46 
json_set_alloc_funcs(json_malloc_t malloc_fn,json_free_t free_fn)47 void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
48 {
49     do_malloc = malloc_fn;
50     do_free = free_fn;
51 }
52