Commit Graph

451 Commits

Author SHA1 Message Date
Max Bruckner 7a2615c231 Fix: Check if __GNUCC__ is defined
This has been detected via MSVC's Warning C4668
2017-06-28 17:28:51 +02:00
Max Bruckner ac368e9dfb MSVC: Fix warning about assignment in condition 2017-06-28 17:28:51 +02:00
Max Bruckner d1c2e2df4a MSVC: workaround for C2322 2017-06-28 17:28:51 +02:00
Max Bruckner 0d675cb048 MSVC: Disable warning about single line comments in system headers 2017-06-28 17:28:50 +02:00
Max Bruckner e872d40223 MSVC: Disable deprecation warnings for C89 functions
C89 sadly doesn't provide safe alternatives for strcpy, sprintf and the
like.
2017-06-28 17:28:50 +02:00
Max Bruckner 38b2f40a9a Add warning -Wunused-macro 2017-06-28 17:28:49 +02:00
Max Bruckner d3bc571a38 Release Version 1.5.6 2017-06-28 17:25:14 +02:00
Max Bruckner 24ea388dcf handle null pointers: cJSON_Minify 2017-06-28 14:22:36 +02:00
Max Bruckner 39745c9c75 handle null pointers: cJSON_ReplaceItemViaPointer 2017-06-28 14:22:29 +02:00
Max Bruckner 9585c38d5a handle null pointers: cJSON_CreateStringArray 2017-06-28 14:22:22 +02:00
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