190 Commits

Author SHA1 Message Date
Max Bruckner
87f77274de cJSON_SetNumberValue: Fix undefined double to int conversion
This might cause slight changes in behavior, but it shouldn't break
anything that is not already broken (for example the original macro
could either return a double, or an integer or whatever depending on if
object is NULL or not.)
2017-02-07 21:23:36 +01:00
Max Bruckner
dded751757 parse_string: remove useless first byte marks for utf8 2017-02-07 21:23:36 +01:00
Max Bruckner
d7b5545748 parse_hex4: deduplicate into a for loop 2017-02-07 21:23:36 +01:00
Max Bruckner
0747669972 parse_number: Switch to C library's strtod
Replaces the hand written floating point parser with the C library
implementation.
2017-02-07 21:23:36 +01:00
Max Bruckner
cc514583cc cJSON_Duplicate: goto fail error handling
Simplify error handling using goto fail and improve some names.
2017-02-07 20:59:55 +01:00
Max Bruckner
021b174ee1 parse_object: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
99cd9af7d5 parse_array: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
8656386c4f parse_string: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
2017-02-07 20:59:55 +01:00
Max Bruckner
9ed906758e fix null pointer dereferences found by coverity 2017-02-07 19:07:18 +01:00
Max Bruckner
ee0c920dff fix: add break in UTF-16 handling
Introducing the switch defaults in an earlier commit made UTF-16 \u
sequence handling broken.
2017-02-04 01:54:56 +01:00
Max Bruckner
af6d5d3d7c Add more consts to unsigned chars 2017-02-03 22:41:14 +01:00
Max Bruckner
cf9d57d56c Fix incorrect return 2017-02-03 20:34:37 +01:00
Max Bruckner
3d3bfc6a4d Compiler flag -Wconversion
Makes type conversions explicit, if they alter a value
2017-02-03 18:36:13 +01:00
Max Bruckner
41e2837df1 Fix potentially undefined behavior when filling valueint
If the number is bigger or smaller than the biggest or smallest integer,
the behavior would be undefined.

This commit defines it as saturation behavior.
2017-02-03 18:36:13 +01:00
Max Bruckner
ecd5678527 Change all internal sizes to size_t 2017-02-03 18:36:12 +01:00
Max Bruckner
28b9ba4334 Change all internal strings to unsigned char* 2017-02-03 15:59:00 +01:00
Max Bruckner
b182ced1d6 Compiler flag -Wswitch-default + add defaults 2017-02-03 12:21:36 +01:00
Max Bruckner
fe18403935 Compiler flag -Wundef + fix incorrect macro 2017-02-03 12:14:50 +01:00
Max Bruckner
c49ffbfba8 cJSON_Version: returns a version string
This is useful to programmatically find out the version of cJSON that
has been used (useful in case of scripting language bindings for
example).
2017-01-12 20:37:29 +01:00
Max Bruckner
e3e0b5150b cJSON_CreateRaw: Format fixes 2017-01-05 21:33:52 +01:00
Max Bruckner
1df987a170 cJSON_strdup: Check for NULL string 2017-01-05 21:31:17 +01:00
Max Bruckner
ddadb44a67 cJSON_Raw: Additional checks in print_value 2017-01-05 21:30:37 +01:00
Max Bruckner
8c58e62597 Merge remote-tracking branch 'loigu/master' into cJSON_Raw 2017-01-05 21:07:08 +01:00
Max Bruckner
fcc89c4bb2 Move increment out of loop condition fixes #85 2016-12-15 11:12:42 +01:00
Stephan
e69db83de5 Temporarily disable warning when const is cast away.
There was a long running discussion here
https://github.com/DaveGamble/cJSON/pull/80 how to provide const
correctness for users of cJSON.

To avoid breaking changes for users of cJSON v1 it was decided to
disable this warning.

pragma was tested with gcc 5.4.0/6.2.1 and clang 3.8/3.9.
2016-12-08 13:21:18 +01:00
Alper Akcan
5b4420298f fix memory leak in cJSON_Duplicate 2016-12-05 14:23:04 +03:00
Max Bruckner
bf17703012 Merge branch 'print_preallocated' 2016-11-28 23:08:25 +07:00
Max Bruckner
6622c54f18 Handle out of memory when printing string 2016-11-28 23:06:38 +07:00
Kyle Chisholm
8df4cd46eb more concise return 2016-11-28 22:59:55 +07:00
Kyle Chisholm
4d1dcaa160 check print_value return 2016-11-28 22:59:54 +07:00
Kyle Chisholm
de93d76d0b changed to cJSON_PrintPreallocated, added flag in printbuffer 2016-11-28 22:59:53 +07:00
Kyle Chisholm
23dafa4739 added Print function call for pre-allocated buffer 2016-11-28 22:53:33 +07:00
Stephan
038b04d80a Take out len from condition check.
Otherwise, the check is just undefined behaviour. gcc even takes out
this check because len can never be zero if len does not wrap around.

Found with -Wstrict-overflow=2
2016-11-28 09:11:14 +01:00
Max Bruckner
23b269d5f9 Rename bool -> cjbool, fix #71 2016-11-25 08:19:18 +07:00
Max Bruckner
679004914f Define a boolean type
This is not changing the behavior of the code, but it is improving the
readability and helps to make the intention clearer.

One thing to take care: 'true' should never be compared against.
2016-11-19 17:29:22 +07:00
Max Bruckner
b88da9b0de Initialize all variables 2016-11-19 17:29:21 +07:00
Max Bruckner
a5ff796c20 Replace 0 with more expressive NULL or '\0' 2016-11-19 17:28:14 +07:00
Max Bruckner
dc4b62915a fix #10, now failing on incorrect escape sequences 2016-11-14 19:33:03 +07:00
Max Bruckner
afd690d1c9 format fix 2016-11-14 19:14:14 +07:00
Jiri Zouhar
06008b0444 add support to insert raw json 2016-11-14 11:20:10 +01:00
Max Bruckner
0d10e279c8 fix #55 memory leak in cJSON_ReplaceItemInObject 2016-11-11 11:53:14 +07:00
Max Bruckner
a148520ffb Revert "Fix #26: Use long double literal for 1e60"
This reverts commit 3ea491c0a603f50ca0fb2505badd332fbd141f75.
2016-11-08 00:53:16 +07:00
Max Bruckner
b4d728d018 pow2gt: Detect integer size fix #27 2016-11-07 20:09:58 +07:00
Max Bruckner
3ea491c0a6 Fix #26: Use long double literal for 1e60
Big thanks at mvollmer (https://sourceforge.net/p/cjson/bugs/45/)
2016-11-05 21:26:18 +07:00
Max Bruckner
4d06882c68 Merge pull request #44 from iMobs/arm_compilation
ARM Compilation
2016-11-01 08:42:45 +07:00
Rod Vagg
5323f558cd don't ignore malloc failure in cJSON_PrintBuffered 2016-10-31 10:54:34 +11:00
Max Bruckner
a1c022fef6 Merge pull request #37 from DaveGamble/reformatting
Reformat cJSON_Utils.c and test.c
2016-10-29 22:52:55 +07:00
Max Bruckner
ddeca82718 reformatting: cJSON.c: fix indentation 2016-10-29 22:44:45 +07:00
Jonathan Fether
9f00ff9a91 Remove redundant test from cJSON_AddItemToArray
The test for whether "c" is null is redundant.  Since this is the else case of "(!c)", and the only way "c" is changed is by the instruction assigning it "c->next" on the condition here, simply verifying that "c->next" isn't null is sufficient.
2016-10-27 20:02:44 -07:00
Ian Mobley
d4836effc9 Fix compiler warning "array subscript has type char" when using arm-none-eabi-gcc 2016-10-17 17:20:57 -07:00
Ian Mobley
b393b3beeb Add const qualifier for non-destructive functions
Functions like cJSON_Print do not and should not modify the object passed
to them.
2016-10-07 15:42:11 -07:00
Max Bruckner
34388c2d4c reformatting: cJSON_Minify 2016-10-02 19:04:30 +07:00
Max Bruckner
9adc6e7fe1 reformatting: cJSON_Duplicate 2016-10-02 19:04:30 +07:00
Max Bruckner
e6fd236f00 reformatting: cJSON_CreateStringArray 2016-10-02 19:04:29 +07:00
Max Bruckner
e272f7285e reformatting: cJSON_CreateDoubleArray 2016-10-02 19:04:29 +07:00
Max Bruckner
890b999e59 reformatting cJSON_CreateFloatArray 2016-10-02 19:04:29 +07:00
Max Bruckner
f831aef5c1 reformatting: cJSON_CreateIntArray 2016-10-02 19:04:28 +07:00
Max Bruckner
21a0a88f19 reformatting: cJSON_CreateObject 2016-10-02 19:04:28 +07:00
Max Bruckner
e241081020 reformatting: cJSON_CreateArray 2016-10-02 19:04:28 +07:00
Max Bruckner
034003ce2b reformatting: cJSON_CreateString 2016-10-02 19:04:28 +07:00
Max Bruckner
3f9f4970b4 reformatting: cJSON_CreateNumber 2016-10-02 19:04:27 +07:00
Max Bruckner
99f61f2b35 reformatting: cJSON_CreateBool 2016-10-02 19:04:27 +07:00
Max Bruckner
a0b5d6b13a reformatting: cJSON_CreateFalse 2016-10-02 19:04:27 +07:00
Max Bruckner
fdfb9fff86 reformatting: cJSON_CreateTrue 2016-10-02 19:04:27 +07:00
Max Bruckner
cf7835b67d reformatting: cJSON_CreateNull 2016-10-02 19:04:26 +07:00
Max Bruckner
3a8043273e reformatting: cJSON_ReplaceItemInObject 2016-10-02 19:04:26 +07:00
Max Bruckner
dc8eb30467 reformatting: cJSON_ReplaceItemInArray 2016-10-02 19:04:26 +07:00
Max Bruckner
69dcfcf238 reformatting: cJSON_InsertItemInArray 2016-10-02 19:04:26 +07:00
Max Bruckner
207bb05e8c reformatting: cJSON_DeleteItemFromObject 2016-10-02 19:04:25 +07:00
Max Bruckner
96ec74c9d5 reformatting: cJSON_DetachItemFromObject 2016-10-02 19:04:25 +07:00
Max Bruckner
6e5063f9cc reformatting: cJSON_DeleteItemFromArray 2016-10-02 19:04:25 +07:00
Max Bruckner
c636621779 reformatting: cJSON_DetachItemFromArray 2016-10-02 19:04:25 +07:00
Max Bruckner
b602ef1cd5 reformatting: cJSON_AddItemReferenceToObject 2016-10-02 19:04:24 +07:00
Max Bruckner
55e33d7100 reformatting: cJSON_AddItemReferenceToArray 2016-10-02 19:04:24 +07:00
Max Bruckner
b55120eeb2 reformatting: cJSON_AddItemToObjectCS 2016-10-02 19:04:24 +07:00
Max Bruckner
196885ad93 reformatting: cJSON_AddItemToObject 2016-10-02 19:04:24 +07:00
Max Bruckner
c26f9b918d reformatting: cJSON_AddItemToArray 2016-10-02 19:04:23 +07:00
Max Bruckner
09545c0eb2 reformatting: create_reference 2016-10-02 19:04:23 +07:00
Max Bruckner
17e13946fe reformatting: cJSON_HasObjectItem 2016-10-02 19:04:23 +07:00
Max Bruckner
af44d57007 reformatting: cJSON_GetObjectItem 2016-10-02 19:04:23 +07:00
Max Bruckner
05c2dc3c2f reformatting: cJSON_GetArrayItem 2016-10-02 19:04:22 +07:00
Max Bruckner
4fdb6499f0 reformatting: cJSON_GetArraySize 2016-10-02 19:04:22 +07:00
Max Bruckner
31e53a1297 reformatting: print_object 2016-10-02 19:04:22 +07:00
Max Bruckner
25632fad13 reformatting: parse_object 2016-10-02 19:04:22 +07:00
Max Bruckner
782770c6ba reformatting: print_array 2016-10-02 19:04:21 +07:00
Max Bruckner
ad711e6fab reformatting: parse_array 2016-10-02 19:04:21 +07:00
Max Bruckner
a9f752e034 reformatting: print_value: 255 -> 0xFF 2016-10-02 19:04:21 +07:00
Max Bruckner
de4dc19e72 reformatting: print_value 2016-10-02 19:04:21 +07:00
Max Bruckner
c5f635d24a reformatting: parse_value 2016-10-02 19:04:20 +07:00
Max Bruckner
9b7eb6a46d reformatting: cJSON_PrintBuffered 2016-10-02 19:04:20 +07:00
Max Bruckner
ec46581b68 reformatting: cJSON_PrintUnformatted 2016-10-02 19:04:20 +07:00
Max Bruckner
1748902d3c reformatting: cJSON_Print 2016-10-02 19:04:20 +07:00
Max Bruckner
f36d9c9ef2 reformatting: cJSON_Parse 2016-10-02 19:04:19 +07:00
Max Bruckner
e809022349 reformatting: cJSON_ParseWithOpts 2016-10-02 19:04:19 +07:00
Max Bruckner
f1dd51bfb5 reformatting: skip 2016-10-02 19:04:19 +07:00
Max Bruckner
d42febea50 reformatting: Predeclared print prototypes 2016-10-02 19:04:18 +07:00
Max Bruckner
7423692586 reformatting: print_string 2016-10-02 19:04:18 +07:00
Max Bruckner
c71cd6cc1c reformatting: print_string_ptr 2016-10-02 19:04:18 +07:00
Max Bruckner
c88d045888 reformatting: parse_string 2016-10-02 19:04:16 +07:00
Max Bruckner
2e2dc873b2 reformatting: firstByteMark 2016-10-02 19:01:27 +07:00