]> git.zerfleddert.de Git - proxmark3-svn/blob - client/jansson/memory.c
Merge branch 'master' of https://github.com/Proxmark/proxmark3
[proxmark3-svn] / client / jansson / memory.c
1 /*
2 * Copyright (c) 2009-2016 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 /* C89 allows these to be macros */
16 #undef malloc
17 #undef free
18
19 /* memory function pointers */
20 static json_malloc_t do_malloc = malloc;
21 static json_free_t do_free = free;
22
23 void *jsonp_malloc(size_t size)
24 {
25 if(!size)
26 return NULL;
27
28 return (*do_malloc)(size);
29 }
30
31 void jsonp_free(void *ptr)
32 {
33 if(!ptr)
34 return;
35
36 (*do_free)(ptr);
37 }
38
39 char *jsonp_strdup(const char *str)
40 {
41 return jsonp_strndup(str, strlen(str));
42 }
43
44 char *jsonp_strndup(const char *str, size_t len)
45 {
46 char *new_str;
47
48 new_str = jsonp_malloc(len + 1);
49 if(!new_str)
50 return NULL;
51
52 memcpy(new_str, str, len);
53 new_str[len] = '\0';
54 return new_str;
55 }
56
57 void json_set_alloc_funcs(json_malloc_t malloc_fn, json_free_t free_fn)
58 {
59 do_malloc = malloc_fn;
60 do_free = free_fn;
61 }
62
63 void json_get_alloc_funcs(json_malloc_t *malloc_fn, json_free_t *free_fn)
64 {
65 if (malloc_fn)
66 *malloc_fn = do_malloc;
67 if (free_fn)
68 *free_fn = do_free;
69 }
Impressum, Datenschutz