Max Bruckner
c268e77b21
handle null pointers: cJSON_CreateDoubleArray
2017-06-28 14:22:15 +02:00
Max Bruckner
9f745a2251
handle null pointers: cJSON_CreateFloatArray
2017-06-28 14:22:07 +02:00
Max Bruckner
010e31f2f2
handle null pointers: cJSON_CreateIntArray
2017-06-28 14:21:55 +02:00
Max Bruckner
8ea37fce01
handle null pointers: replace_item_in_object
2017-06-28 14:21:48 +02:00
Max Bruckner
b2fe02712d
handle null pointers: cJSON_AddItemReferenceToObject
2017-06-28 14:21:42 +02:00
Max Bruckner
c179509b31
handle null pointers: cJSON_AddItemReferenceToArray
2017-06-28 14:21:34 +02:00
Max Bruckner
46c4f55c94
handle null pointers: cJSON_AddItemToObjectCS
2017-06-28 14:21:26 +02:00
Max Bruckner
90ff72c8bb
handle null pointers: create_reference
...
Also fixes a potential memory leak
2017-06-28 14:21:09 +02:00
Max Bruckner
e9d1de24cf
handle null pointers: cJSON_GetArraySize
2017-06-28 14:20:58 +02:00
Max Bruckner
56f2bc6f3e
handle null pointers: cJSON_PrintPreallocated
2017-06-28 14:20:47 +02:00
Max Bruckner
cdc35ebf88
handle null pointers: cJSON_AddItemToObject
2017-06-28 14:20:34 +02:00
Max Bruckner
2a3a313f83
cJSON_PrintBuffered: Fix potential memory leak
2017-06-27 23:10:19 +02:00
Max Bruckner
a2a2411b12
Release version 1.5.5
2017-06-14 18:07:25 +02:00
Max Bruckner
03ba72faec
cJSON_Compare: Fix comparison of objects
...
It did consider two arrays equal if one is a subset of te other one,
which is incorrect.
See #180
2017-06-14 17:48:56 +02:00
Max Bruckner
569aa060c6
cJSON_Compare: Fix comparison of arrays
...
It did consider two arrays equal if one is a prefix of the other one,
which is incorrect.
See #180
2017-06-14 17:48:56 +02:00
Max Bruckner
9189b3322a
Release v1.5.4
2017-06-04 21:31:45 +02:00
Max Bruckner
00d5e225a6
Release version 1.5.3
2017-05-22 22:59:32 +02:00
Max Bruckner
9ecc96878f
fix #174 : cJSON_ReplaceItemInObject doesn't copy name
2017-05-22 22:55:05 +02:00
Max Bruckner
de5df3e56f
Release version 1.5.2
2017-05-10 02:25:25 +02:00
Max Bruckner
a167d9e381
Fix reading buffer overflow in parse_string
2017-05-10 02:09:01 +02:00
Max Bruckner
186cce3ece
Fix -Wcomma
2017-05-10 00:52:33 +02:00
Max Bruckner
6c9f76c100
Release version 1.5.1
2017-05-06 08:42:59 +02:00
Max Bruckner
1217ca9e9f
Release version 1.5.0
2017-05-02 02:34:55 +02:00
Max Bruckner
2d6a2e0133
Merge branch 'develop' prepare v1.5.0
2017-05-02 02:30:26 +02:00
Max Bruckner
dede4e3246
Add cJSON_ReplaceItemInObjectCaseSensitive
2017-05-02 01:18:55 +02:00
Max Bruckner
8b953d1202
Add cJSON_ReplaceItemViaPointer
2017-05-02 01:18:55 +02:00
Max Bruckner
2d07bbc9b2
Add cJSON_DeleteItemFromObjectCaseSensitive
2017-05-02 00:36:10 +02:00
Max Bruckner
8816a568ab
Add cJSON_DetachItemFromObjectCaseSensitive
2017-05-02 00:34:17 +02:00
Max Bruckner
33193ea557
Internal function get_array_item
2017-05-02 00:27:33 +02:00
Max Bruckner
acb0ca88df
Use cJSON_DetachItemViaPointer internally
2017-05-01 23:59:14 +02:00
Max Bruckner
c24c3e0285
Add cJSON_DetachItemViaPointer
2017-05-01 23:58:04 +02:00
Max Bruckner
87fad25c2b
Merge pull request #153 from DeboraG/print_number_prec
...
cJSON: Fix print_number to print significant digits of doubles
2017-04-29 19:56:58 +02:00
Debora Grosse
a69ad22639
Remove test for negative zero, as -0 is acceptable output
2017-04-29 13:08:10 -04:00
Max Bruckner
949c083315
Move 'hooks' parameter into buffers (parse/print)
2017-04-27 02:48:28 +02:00
Max Bruckner
c4c217f2ce
Move 'format' into printbuffer
2017-04-27 02:21:09 +02:00
Max Bruckner
79f30800ec
Move print depth into printbuffer
2017-04-27 02:10:03 +02:00
Max Bruckner
e0d3a8a265
Limit nesting depth to 1000 and make it configurable.
2017-04-27 01:57:45 +02:00
Debora Grosse
3fc9bc0648
cJSON: Fix print_number to print significant digits of doubles
2017-04-20 10:55:09 -04:00
Max Bruckner
05f75e360b
Release Version 1.4.7
2017-04-18 21:35:21 +02:00
Max Bruckner
02a05eea4e
cJSON: Add cJSON_malloc and cJSON_free
2017-04-12 20:50:03 +02:00
Max Bruckner
6ac896d8d2
cJSON_Compare: New function to compare json
2017-04-08 17:57:36 +02:00
Max Bruckner
2a25abbf2a
Deduplicate code for cJSON_GetObjectItem
2017-04-08 17:57:36 +02:00
Max Bruckner
e9803341d5
simplify and rename cJSON_strcasecmp
...
Two NULL strings should not be considered equal for the purpose of
cJSON.
2017-04-08 17:57:36 +02:00
Max Bruckner
6c3df7eb59
cJSON_ParseWithOpts: Fix -Wmissing-field-initializers
2017-04-08 17:56:30 +02:00
Pawel Winogrodzki
2148e3277a
Renaming "min" to "cjson_min".
2017-04-08 17:56:29 +02:00
Pawel Winogrodzki
c786cd9714
Adding back "const".
2017-04-08 17:56:29 +02:00
Pawel Winogrodzki
238ceec175
Fixing all W4-level warnings.
2017-04-08 17:56:29 +02:00
Max Bruckner
6702037b68
cJSON_Delete: Improve readability
2017-04-08 17:56:28 +02:00
Max Bruckner
eb5000ba61
cJSON_strdup: improve readability
2017-04-08 17:56:28 +02:00
Max Bruckner
655c26ada1
cJSON_strcasecmp: Improve readability
2017-04-08 17:56:28 +02:00
Max Bruckner
218b0c8dcf
cJSON_Print: Use reallocate if available
...
This can reduce worst case peak memory usage by 30% depending on the
realloc implementation.
2017-04-08 17:56:28 +02:00
Max Bruckner
281df6997c
Update copyright
2017-04-08 17:56:27 +02:00
Max Bruckner
56a32f9ecc
Use error_position instead of error pointer internally
2017-04-08 17:56:27 +02:00
Max Bruckner
2683589d93
parser: Construct error pointer from buffer offset
2017-04-08 17:56:26 +02:00
Max Bruckner
c837177a56
utf16_literal_to_utf8: Support \u0000
2017-04-08 17:56:26 +02:00
Max Bruckner
80bc7652ae
cJSON_ParseWithOptions: Remove end pointer
2017-04-08 17:56:26 +02:00
Max Bruckner
87a204ed0b
parse_functions: Return booleans instead of pointers
2017-04-08 17:56:26 +02:00
Max Bruckner
c9739c59fd
Replace strchr with switch case
...
This should improve performance and improve readability.
2017-04-08 17:56:25 +02:00
Max Bruckner
778a0c146f
parse_string: Use parsebuffer
2017-04-08 17:56:25 +02:00
Max Bruckner
f69b109c9f
parse_number: Use parse_buffer
2017-04-08 17:56:25 +02:00
Max Bruckner
fef1c45b92
parse_object: Use parse_buffer
2017-04-08 17:56:25 +02:00
Max Bruckner
033a542532
parse_array: Use parsebuffer
2017-04-08 17:56:25 +02:00
Max Bruckner
fd0320cf54
parse_value: Use parse_buffer
2017-04-08 17:56:24 +02:00
Max Bruckner
0f98214e71
parsebuffer: type and macros
2017-04-08 17:56:24 +02:00
Max Bruckner
06a2326e3b
cJSON_ParseWithOpts: Use goto fail
2017-04-08 17:56:24 +02:00
Max Bruckner
11131b9ced
cJSON_ParseWithOptions: Improve variable names and intent
2017-04-08 17:56:24 +02:00
Max Bruckner
99db5db9a4
Release version 1.4.6
2017-04-08 17:54:55 +02:00
Max Bruckner
c08f7e1d29
print_number: Make locale independent
...
This first prints the number into a temporary buffer and then copies the
number to the output.
A positive side effect is that cJSON no longer reserves more space for
the number in the output than is necessary.
2017-04-08 03:38:49 +02:00
Max Bruckner
71b96afc27
print_number: Fix comment (missing word 'zeroes')
2017-04-08 02:46:24 +02:00
Max Bruckner
749fefc0c4
Make parse_number locale independent
2017-04-08 02:41:36 +02:00
Max Bruckner
c784f76c77
cJSON_strdup: Use sizeof("") instead of 1
2017-04-08 01:29:19 +02:00
Max Bruckner
84237ff48e
Replace sizeof('\0') with sizeof("")
...
Because sizeof('\0') is actually sizeof(int) not sizeof(char).
2017-04-08 01:29:19 +02:00
Max Bruckner
2683d4d987
ensure: Fix overflow detection
2017-04-05 16:35:55 +02:00
Max Bruckner
3a20692c18
Release version 1.4.5
2017-03-28 17:39:39 +02:00
Max Bruckner
ef34500693
cJSON_SetNumberHelper: Fix valueint, closes #138
...
Thanks @mmkeeper
2017-03-28 17:29:52 +02:00
Max Bruckner
b0dfcde04c
Release Version 1.4.4
2017-03-23 22:13:25 +01:00
Max Bruckner
1934059554
ensure: Validate buffer offset
2017-03-23 22:01:38 +01:00
Max Bruckner
cc84a446be
ensure: Fix potential off by one error.
2017-03-23 22:01:16 +01:00
Max Bruckner
e58f7ec027
ensure: Fix potential overflow of size_t
...
This could only happen if the maximum SIZE_T is not at least 2 times
bigger than INT_MAX. Not sure if this can happen on real systems, but
better be safe then sorry.
2017-03-23 20:26:29 +01:00
Max Bruckner
b7ce06224b
Release version 1.4.3
2017-03-19 11:05:33 +01:00
Max Bruckner
227d3398d6
Fix the pragmas for Wcast-qual with old gcc versions
2017-03-18 17:52:33 +01:00
Max Bruckner
466eb8e3f8
Fix wconversion with old gcc (e.g. 4.3)
2017-03-18 17:52:04 +01:00
Max Bruckner
a1b37d0abe
Release Version 1.4.2
2017-03-16 01:28:23 +01:00
Max Bruckner
e3d5798896
Release version 1.4.1
2017-03-15 20:11:19 +01:00
Max Bruckner
cf1842dc6f
fix: print_number didn't abort when out of memory
2017-03-15 00:09:45 +01:00
Max Bruckner
030d0c14cc
Merge branch 'develop' (Release 1.4.0)
2017-03-03 23:26:52 +01:00
Max Bruckner
02cd3eec37
Update version number to 1.4.0
2017-03-03 23:21:53 +01:00
Max Bruckner
0bb1843925
print_value: return as soon as possible
2017-03-03 00:40:02 +01:00
Max Bruckner
5ea4fad263
print_string: return boolean instead of pointer
2017-03-03 00:33:11 +01:00
Max Bruckner
1749de02f8
print_number: return boolean instead of pointer
2017-03-03 00:26:58 +01:00
Max Bruckner
748f4bfd4f
print_object: return boolean instead of pointer
2017-03-03 00:21:34 +01:00
Max Bruckner
bea1d102fd
print_array: return boolean instead of pointer
2017-03-03 00:16:54 +01:00
Max Bruckner
d441fa05b3
print_value: return boolean instead of pointer
2017-03-03 00:11:43 +01:00
Max Bruckner
d8d0ae66d3
print_number: Fix incorrect output pointer
2017-03-02 23:57:01 +01:00
Max Bruckner
9d07917feb
utf16_literal_to_utf8: Eliminate Duff's Device
...
This fixes -Wimplicit-fallthrough warnings with GCC7.
2017-03-02 13:46:31 +01:00
Max Bruckner
6405fd15e3
CMake: Set default visibility to hidden and dllexport on windows
2017-03-01 23:19:35 +01:00
Max Bruckner
2d3520e0b9
Use own cJSON_bool boolean type in the header
2017-03-01 22:50:12 +01:00
Max Bruckner
412f4f7d62
Use CJSON_PUBLIC for typecheck functions
2017-03-01 22:47:45 +01:00
Max Bruckner
dd4cb5400f
print_number: Remove unnecessary integer handling
2017-03-01 13:28:27 +01:00
Max Bruckner
1ea72f8260
print_number: Remove trailing zeroes (for doubles)
2017-03-01 13:22:32 +01:00
Max Bruckner
e78bc42362
print_number: Return buffer + offset instead of beginning of the number
2017-03-01 13:00:52 +01:00
Max Bruckner
6f271e511f
print_number: Use sprintf's return value
...
This is used to update the buffer offset and determine success
2017-03-01 12:56:32 +01:00
Max Bruckner
3f349a4258
Add -Wdouble-promotion compiler flag
2017-03-01 11:57:07 +01:00
Max Bruckner
b056d7cb74
Add -Wcomma compiler flag
2017-03-01 11:57:06 +01:00
Max Bruckner
c66d95d116
Release bugfix release 1.3.2
2017-02-28 21:43:02 +01:00
Max Bruckner
024f690289
Merge pull request #116 from mjerris/fschanges
...
add CJSON_DECLARE macros to support gcc visibility and windows dllexport
2017-02-27 21:51:55 +01:00
Mike Jerris
039b1cc653
add CJSON_PUBLIC macro to public functions to support visibility and dllimport/dllexport
2017-02-27 13:47:06 -06:00
Max Bruckner
c0ff1fef9b
Release 1.3.1
2017-02-26 22:04:22 +01:00
Max Bruckner
c26d53f0d7
Helper function to check the type of an item
...
This is necessary, because you can get it wrong if you do it manually.
(when you forget the & 0xFF in the comparison)
2017-02-26 14:30:50 +01:00
Mike Jerris
72e6e23523
prevent read beyond end of buffer when string ends with malformed utf
2017-02-23 08:59:25 -06:00
Max Bruckner
501046247d
fix clang-sanitizer warnings
2017-02-21 15:08:36 +01:00
Max Bruckner
68cd0d4a11
cJSON.c: Pass allocation functions through internal functions
...
This is the first step in removing the global allocator functions. Every
internal function now only accesses its locally available set of
allocators.
2017-02-21 14:50:49 +01:00
Max Bruckner
605422c60a
cJSON: New function cJSON_GetObjectItemCaseSensitive
2017-02-21 11:17:08 +01:00
Max Bruckner
1d42c9bc60
print_object: simplify code
2017-02-20 23:07:24 +01:00
Max Bruckner
b71db93e03
print_object: rename variables
2017-02-20 23:07:24 +01:00
Max Bruckner
6d5a7c8c40
print_array: simplify code
2017-02-20 23:07:24 +01:00
Max Bruckner
8c1ed3ab82
update: rename to update_offset and change offset directly
2017-02-20 23:07:24 +01:00
Max Bruckner
f16dd7e028
print_array: rename variables
2017-02-20 23:07:24 +01:00
Max Bruckner
08770fc246
print_value: rename variables
2017-02-20 23:07:23 +01:00
Max Bruckner
0ca8587acc
print_string_ptr: simplify code
2017-02-20 23:07:23 +01:00
Max Bruckner
6a746a230a
print_string: Add more const
2017-02-20 23:07:23 +01:00
Max Bruckner
1e999352d3
print_string_ptr: rename variables
2017-02-20 23:07:23 +01:00
Max Bruckner
6815d96617
print_number: rename variables
2017-02-20 23:07:22 +01:00
Max Bruckner
61921498d0
print_number: remove special case for 0
...
Now that printbuffer is used for everything, it's not needed anymore.
2017-02-20 23:07:22 +01:00
Max Bruckner
3c4d309f62
ensure: Don't accept empty printbuffers anymore
2017-02-19 04:20:21 +01:00
Max Bruckner
9bf531ca05
Remove printing without buffer
2017-02-19 04:16:57 +01:00
Max Bruckner
80354bdb06
cJSON_Print: Use printbuffer
2017-02-19 04:03:02 +01:00
Max Bruckner
331c18d09a
ensure: only memcopy what's necessary
...
We don't need to copy the entire printbuffer, only the part that is
used.
2017-02-18 12:07:17 +01:00
Max Bruckner
4fff92140e
ensure: use realloc if possible
2017-02-18 12:07:17 +01:00
Max Bruckner
fc1d4b07df
ensure: if printbuffer is null: cJSON_malloc
...
This allowed for the removal of a lot of if (p) checks.
2017-02-18 11:35:59 +01:00
Max Bruckner
bd073343fa
rename skip -> skip_whitespace
2017-02-17 19:37:31 +01:00
Max Bruckner
4fce9cce86
Release version 1.3.0
2017-02-17 01:42:02 +01:00
Max Bruckner
b41264d164
Remove uint8_t because it's not part of C89
2017-02-16 21:22:43 +01:00
Max Bruckner
0f271dcf63
parse_hex4: make input pointer const
2017-02-16 21:02:26 +01:00
Max Bruckner
ead389aba2
parse_value: improve variable names + const correctness
2017-02-16 21:02:25 +01:00
Max Bruckner
698dc528f4
parse_object: improve variable names + const correctness
2017-02-16 21:02:25 +01:00
Max Bruckner
3dc6339025
parse_array: improve variable names + const correctness
2017-02-16 20:08:59 +01:00
Max Bruckner
15592c50f6
parse_number: improve variable names + const correctness
2017-02-16 20:02:18 +01:00
Max Bruckner
efb5e1bc93
parse_string: Improve const correctnes of pointers
2017-02-16 20:00:12 +01:00
Max Bruckner
ace5047782
parse_string: reduce mental burden when reading the code
...
This restructures parse_string in a way, that you need to keep less
state in your head to understand the code.
This is achieved by:
* only changing the input pointer (current position) at a few places
(not all throughout)
* splitting out the UTF16 handling into a separate function
* renaming the variables so you know what they do without additional
context
2017-02-16 19:49:03 +01:00
Max Bruckner
03f23738bb
parse_object: simplify to one do-while loop
2017-02-16 19:49:02 +01:00
Max Bruckner
24dbf29360
parse_array: simplify to one do-while loop
2017-02-16 19:49:02 +01:00
Max Bruckner
12b2daccf3
parse_{object,array}: set child only after parsing
...
This only attaches the parsed linked lists to the items passed to
parse_object and parse_array.
2017-02-16 01:03:43 +01:00
Max Bruckner
f8d0c47bdb
Remove unnecessary assignment and silence clang analyzer
2017-02-16 00:31:57 +01:00
Max Bruckner
9f6fa94c91
ensure: replace pow2gt with multiplication by two
...
This replaces the bit fiddling involved with calculating a new buffer
size by just multiplying the required length by two, paving the way to a
complete switch to size_t at a later point in time.
2017-02-16 00:23:38 +01:00
Max Bruckner
123bb1af7b
cJSON: prevent incompatible C and header versions
...
Introduces a preprocessor directive that aborts the compilation if the
version numbers in the header don't match with the numbers in the c
file.
2017-02-15 23:21:50 +01:00
Max Bruckner
cf862d0fed
implement AddItemToObject using AddItemToObjectCS
2017-02-15 21:46:24 +01:00
Max Bruckner
3facca4792
parse functions: Only set type after successful
...
This sets the type of an item only if parsing was successful.
This means that in case of failure, the item's type will remain to be
cJSON_Invalid.
2017-02-15 21:25:48 +01:00
Max Bruckner
702fd95af3
fix #106 : potentially invalid free in cJSON_AddItemToObject
2017-02-15 20:45:23 +01:00
Max Bruckner
94117a5d23
Fix #105 , double free when parse_string fails
...
This fixes a double free that happens when calling cJSON_Delete on an
item that has been used by parse_string and it failed parsing the
string.
The double free happens, because parse_string frees an alias of
item->valuestring, but doesn't set item->valuestring to NULL.
2017-02-15 15:37:38 +01:00