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
Max Bruckner
4047de4f6e
fix potential NULL dereferences found by coverity
2017-02-08 03:00:44 +01:00
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