Max Bruckner
4fce9cce86
Release version 1.3.0
v1.3.0
2017-02-17 01:42:02 +01:00
Max Bruckner
415962da34
Merge pull request #109 from DaveGamble/simplify-parse
...
Simplify parsing
2017-02-16 21:23:36 +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
b6974ecbc9
Makefile: Update compiler options
2017-02-16 12:52:00 +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
57d105d498
Merge pull request #108 from DaveGamble/cJSON_Invalid
...
Add new type cJSON_Invalid
2017-02-15 21:28:14 +01:00
Max Bruckner
5986edba1d
tests: Ensure that failed parsing returns invalid items
2017-02-15 21:25:52 +01:00
Max Bruckner
c6e1a281f9
tests: assertion macros
2017-02-15 21:25:52 +01:00
Max Bruckner
4f58695ed3
tests: extract common functionality to common.c
2017-02-15 21:25:51 +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
cf48ea8175
New Type: cJSON_Invalid
...
This assigns the macro cJSON_Invalid to 0.
2017-02-15 21:19:38 +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
c3bd4463be
cJSON_Utils: Guard use of %lu format string for size_t
2017-02-15 13:09:32 +01:00
Max Bruckner
9d7e8f1175
cJSON_Utils: Add casts to unsigned long, fix #103
...
Thanks @rrvirtual for the suggestion.
2017-02-09 15:09:06 +01:00
Max Bruckner
4047de4f6e
fix potential NULL dereferences found by coverity
2017-02-08 03:00:44 +01:00
Max Bruckner
49b9336558
Merge pull request #92 from DaveGamble/tests
...
Introduce the cunity testing framework
2017-02-07 21:50:07 +01:00
Max Bruckner
d04a2aeccf
README: Document additional CMake options
2017-02-07 21:44:37 +01:00
Max Bruckner
33e01ae087
Add support for Travis-CI
2017-02-07 21:35:38 +01:00
Max Bruckner
a09defec4c
CMake: Add ENABLE_SANITIZERS flag
...
Enabling this flag enables AddressSanitizer and
UndefinedBehaviorSanitizer
2017-02-07 21:35:21 +01:00
Max Bruckner
21c02cd3e5
CMake: Add Valgrind support
2017-02-07 21:35:21 +01:00
Max Bruckner
5a36b71a80
unity-tests: parse_value
2017-02-07 21:35:21 +01:00
Max Bruckner
9041570eba
unity-tests: parse_object
2017-02-07 21:35:21 +01:00
Max Bruckner
71b05fd4c2
unity-tests: parse_array
2017-02-07 21:35:21 +01:00
Max Bruckner
598b609c45
unity-tests: parse_string
2017-02-07 21:35:20 +01:00
Max Bruckner
b0e5209bde
unity-tests: test parse_hex4
2017-02-07 21:35:20 +01:00
Max Bruckner
7fd536d7e0
unity-tests: parse_number
2017-02-07 21:35:20 +01:00
Max Bruckner
be0951dfa4
Move parse tests from test.c -> parse_example.c
2017-02-07 21:35:20 +01:00
Max Bruckner
86be961bb5
test.c: remove file related code
2017-02-07 21:35:19 +01:00
Max Bruckner
bb60d6def5
cunity: parse_examples: test example files
...
Test parsing and printing example files
2017-02-07 21:35:19 +01:00
Max Bruckner
896e52255b
CMake: Build unity as library
2017-02-07 21:35:19 +01:00
Max Bruckner
12acc57967
unity: make it work with -Wconversion
2017-02-07 21:35:19 +01:00
Max Bruckner
6b9b57be22
Squashed 'tests/unity/' content from commit 1782bab
...
git-subtree-dir: tests/unity
git-subtree-split: 1782bab0bacd349a45bc215ff91f082912cd7a64
2017-02-07 21:30:57 +01:00
Max Bruckner
d19f3ae890
Merge commit '6b9b57be226a505a9c9cdd9ed029f22495ce04ec' as 'tests/unity'
2017-02-07 21:30:57 +01:00
Max Bruckner
e65ea3a45b
Merge pull request #101 from DaveGamble/simplify-correctness
...
Simplify some code and improve correctness
2017-02-07 21:29:11 +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
f09bdef15e
Revert "test.c: Fix buffer overrun found by coverity"
...
This reverts commit c866abd84259acacf79524921a0ca6634fd71ddd.
The length of this buffer was intentional. This looks like a false
positive.
2017-02-07 21:22:40 +01:00
Max Bruckner
7119a16b5f
Merge pull request #100 from DaveGamble/goto-fail
...
Use goto fail for error handling and fix some memory leaks on the way
2017-02-07 21:13:51 +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
c866abd842
test.c: Fix buffer overrun found by coverity
2017-02-07 20:59:55 +01:00
Max Bruckner
1f5538f79d
CMake: Fix several problems with automatic flag detection
2017-02-07 20:56:54 +01:00
Max Bruckner
9ed906758e
fix null pointer dereferences found by coverity
2017-02-07 19:07:18 +01:00
Max Bruckner
2f712c7456
CMake: Fix compile flag detection on old CMake
2017-02-07 16:43:33 +01:00
Max Bruckner
d00ca18ac2
CMake: automatic detection of compiler flag compatibility
2017-02-07 14:51:29 +01:00
Max Bruckner
6cdb6894d4
Compiler flags: Add -fstack-protector-strong
2017-02-06 01:51:53 +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
4d95639001
Merge pull request #98 from DaveGamble/compiler-options
...
More compiler flags + correctness improvements
2017-02-03 19:43:11 +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
981f59b163
Release Version 1.2.1
v1.2.1
2017-01-30 19:36:36 +01:00
Max Bruckner
e4eadb9a81
Merge pull request #97 from DaveGamble/fix96-null-pointer-dereference
...
Fix potential null pointer dereference in cJSON_Utils
Fixes #96
2017-01-30 19:34:33 +01:00
Max Bruckner
ff0681e4fd
Utils: PatchDetach: Check for invalid patch string
2017-01-30 19:30:16 +01:00
Max Bruckner
a2309a509d
Utils: InplaceDecodePointerString: Check for NULL
2017-01-30 19:29:52 +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
e7533aa6f0
Put version information in the header
...
This is important so that it is always known which version of the
library is used, especially if the C and Header files have just been
copy pasted to another code base.
2017-01-12 20:35:13 +01:00
Max Bruckner
de8eaaba89
Release version 1.2.0
v1.2.0
2017-01-09 12:25:31 +01:00
Max Bruckner
b2da44d6cb
Merge pull request #90 from DaveGamble/cJSON_Raw
...
Add support for raw JSON
2017-01-09 12:22:00 +01:00
Max Bruckner
f6998a6a34
Contributors: Add Jiri Zouhar
2017-01-09 12:02:21 +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
9ef44fc0b6
Remove C++ comment in header
2017-01-05 21:12:10 +01:00
Max Bruckner
8c58e62597
Merge remote-tracking branch 'loigu/master' into cJSON_Raw
2017-01-05 21:07:08 +01:00
Max Bruckner
8893e39712
gitignore: ignore *.orig
2017-01-04 20:40:34 +01:00
Max Bruckner
3d6ae11340
Make cJSON C++ compatible
2016-12-28 12:33:20 +01:00
Max Bruckner
a1f2600883
Contributors: Add Romain Porte
2016-12-28 12:29:03 +01:00
Max Bruckner
fcc85bdfbc
Gitignore: Add Makefile output
2016-12-28 12:23:56 +01:00
Max Bruckner
7d08a3518a
Merge pull request #88 from MicroJoe/fix-readme-tests
...
Fix bad CMake argument in README
2016-12-28 12:20:37 +01:00
Romain Porte
cc486a0354
Fix bad CMake argument in README
2016-12-27 11:32:41 +01:00
Max Bruckner
fcc89c4bb2
Move increment out of loop condition fixes #85
2016-12-15 11:12:42 +01:00
Max Bruckner
a0431e226f
Merge pull request #83 from gatzka/feature/cast_qual_v3
...
Introduce compiler check if const is casted away.
2016-12-08 21:59:32 +07:00
Stephan Gatzka
89edfb6741
Warn if cast removes a type qualifier like const.
2016-12-08 13:21:30 +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
Max Bruckner
5310da351d
contributors: Add Alper Akcan
v1.1.0
2016-12-06 09:01:12 +07:00
Max Bruckner
68196f5b14
Release version 1.1.0
2016-12-06 08:56:23 +07:00