Max Bruckner
6815d96617
print_number: rename variables
8 years ago
Max Bruckner
61921498d0
print_number: remove special case for 0
Now that printbuffer is used for everything, it's not needed anymore.
8 years ago
Max Bruckner
3c4d309f62
ensure: Don't accept empty printbuffers anymore
8 years ago
Max Bruckner
9bf531ca05
Remove printing without buffer
8 years ago
Max Bruckner
80354bdb06
cJSON_Print: Use printbuffer
8 years ago
Max Bruckner
331c18d09a
ensure: only memcopy what's necessary
We don't need to copy the entire printbuffer, only the part that is
used.
8 years ago
Max Bruckner
4fff92140e
ensure: use realloc if possible
8 years ago
Max Bruckner
fc1d4b07df
ensure: if printbuffer is null: cJSON_malloc
This allowed for the removal of a lot of if (p) checks.
8 years ago
Max Bruckner
bd073343fa
rename skip -> skip_whitespace
8 years ago
Max Bruckner
4fce9cce86
Release version 1.3.0
8 years ago
Max Bruckner
b41264d164
Remove uint8_t because it's not part of C89
8 years ago
Max Bruckner
0f271dcf63
parse_hex4: make input pointer const
8 years ago
Max Bruckner
ead389aba2
parse_value: improve variable names + const correctness
8 years ago
Max Bruckner
698dc528f4
parse_object: improve variable names + const correctness
8 years ago
Max Bruckner
3dc6339025
parse_array: improve variable names + const correctness
8 years ago
Max Bruckner
15592c50f6
parse_number: improve variable names + const correctness
8 years ago
Max Bruckner
efb5e1bc93
parse_string: Improve const correctnes of pointers
8 years ago
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
8 years ago
Max Bruckner
03f23738bb
parse_object: simplify to one do-while loop
8 years ago
Max Bruckner
24dbf29360
parse_array: simplify to one do-while loop
8 years ago
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.
8 years ago
Max Bruckner
f8d0c47bdb
Remove unnecessary assignment and silence clang analyzer
8 years ago
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.
8 years ago
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.
8 years ago
Max Bruckner
cf862d0fed
implement AddItemToObject using AddItemToObjectCS
8 years ago
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.
8 years ago
Max Bruckner
702fd95af3
fix #106 : potentially invalid free in cJSON_AddItemToObject
8 years ago
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.
8 years ago
Max Bruckner
4047de4f6e
fix potential NULL dereferences found by coverity
8 years ago
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.)
8 years ago
Max Bruckner
dded751757
parse_string: remove useless first byte marks for utf8
8 years ago
Max Bruckner
d7b5545748
parse_hex4: deduplicate into a for loop
8 years ago
Max Bruckner
0747669972
parse_number: Switch to C library's strtod
Replaces the hand written floating point parser with the C library
implementation.
8 years ago
Max Bruckner
cc514583cc
cJSON_Duplicate: goto fail error handling
Simplify error handling using goto fail and improve some names.
8 years ago
Max Bruckner
021b174ee1
parse_object: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
8 years ago
Max Bruckner
99cd9af7d5
parse_array: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
8 years ago
Max Bruckner
8656386c4f
parse_string: goto fail error handling
Makes the control flow easier to reason about and fixes a few potential
memory leaks.
8 years ago
Max Bruckner
9ed906758e
fix null pointer dereferences found by coverity
8 years ago
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.
8 years ago
Max Bruckner
af6d5d3d7c
Add more consts to unsigned chars
8 years ago
Max Bruckner
cf9d57d56c
Fix incorrect return
8 years ago
Max Bruckner
3d3bfc6a4d
Compiler flag -Wconversion
Makes type conversions explicit, if they alter a value
8 years ago
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.
8 years ago
Max Bruckner
ecd5678527
Change all internal sizes to size_t
8 years ago
Max Bruckner
28b9ba4334
Change all internal strings to unsigned char*
8 years ago
Max Bruckner
b182ced1d6
Compiler flag -Wswitch-default + add defaults
8 years ago
Max Bruckner
fe18403935
Compiler flag -Wundef + fix incorrect macro
8 years ago
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).
8 years ago
Max Bruckner
e3e0b5150b
cJSON_CreateRaw: Format fixes
8 years ago
Max Bruckner
1df987a170
cJSON_strdup: Check for NULL string
8 years ago