Update space requirements of cJSON_PrintPreallocated

This commit is contained in:
Max Bruckner 2017-04-08 03:42:44 +02:00
parent c08f7e1d29
commit 65541b900c
2 changed files with 3 additions and 3 deletions

View File

@ -133,7 +133,7 @@ CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */ /* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt); CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */ /* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
/* NOTE: If you are printing numbers, the buffer hat to be 63 bytes bigger then the printed JSON (worst case) */ /* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format); CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
/* Delete a cJSON entity and all subentities. */ /* Delete a cJSON entity and all subentities. */
CJSON_PUBLIC(void) cJSON_Delete(cJSON *c); CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);

4
test.c
View File

@ -53,8 +53,8 @@ static int print_preallocated(cJSON *root)
out = cJSON_Print(root); out = cJSON_Print(root);
/* create buffer to succeed */ /* create buffer to succeed */
/* the extra 64 bytes are in case a floating point value is printed */ /* the extra 5 bytes are because of inaccuracies when reserving memory */
len = strlen(out) + 64; len = strlen(out) + 5;
buf = (char*)malloc(len); buf = (char*)malloc(len);
if (buf == NULL) if (buf == NULL)
{ {