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 3ea491c0a6
.
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
Max Bruckner
e10f2bf08d
reformatting: parse_hex4
2016-10-02 19:01:27 +07:00
Max Bruckner
67845e3dc6
reformatting: print_number
2016-10-02 19:01:27 +07:00
Max Bruckner
282006d918
reformatting: update
2016-10-02 19:01:26 +07:00
Max Bruckner
7f9a2691bf
reformatting: ensure
2016-10-02 19:01:26 +07:00
Max Bruckner
b53ce73709
reformatting: printbuffer
2016-10-02 19:01:26 +07:00
Max Bruckner
d5bd497636
reformatting: pow2gt
2016-10-02 19:01:26 +07:00
Max Bruckner
88cbe57ba4
reformatting: parse_number
2016-10-02 19:01:25 +07:00
Max Bruckner
46cfa68a2b
reformatting: cJSON_Delete
2016-10-02 19:01:25 +07:00
Max Bruckner
55488f66f6
reformatting: cJSON_New_Item
2016-10-02 19:01:25 +07:00
Max Bruckner
8db7e6d320
reformatting: cJSON_InitHooks
2016-10-02 19:01:25 +07:00
Max Bruckner
18081c03c4
reformatting: cJSON_strdup
2016-10-02 19:01:24 +07:00
Max Bruckner
542ed727d7
reformatting: cJSON_strcasecmp
2016-10-02 19:01:24 +07:00
Max Bruckner
c42b774f9f
reformatting: cJSON_GetErrorPtr
2016-10-02 19:01:24 +07:00
Max Bruckner
94df772485
fix buffer overflow ( #30 )
2016-10-02 18:56:53 +07:00
Dave Gamble
2fe50bd557
get rid of isnormal test!!
2016-05-29 16:19:14 +01:00
Dave Gamble
87f55416c1
we can safely remove this, since the initial d==0 case catches this.
2016-05-29 16:01:06 +01:00
Dave Gamble
e6b352d126
tidy up some code that was added a while back.
2016-03-20 00:24:41 +00:00
Dave Gamble
b4151361de
Allow for global/local error pointers. If you supply a return_parse_end
...
to cJSON_ParseWithOpts, then that will store the error pointer (if
parsing fails).
2016-03-19 18:41:44 +00:00
Dave Gamble
fe967cd1ff
extra checking for memory allocation failure.
2016-03-19 18:14:19 +00:00
Dave Gamble
ee579ecbd6
Integrate patch for handling broken unicode surrogate pairs, with
...
thanks to kolman and Irwan Djajadi on SourceForge.
2016-03-19 18:14:06 +00:00
Christian Schulze
52d7d14f6c
fixed segfault when the lib tries to parse HTML with embedded CSS; provided test case
2016-03-06 16:43:53 +01:00
Max Bruckner
8222e9b8c4
Fix printing of empty string pointers
...
Once the check if str is NULL is reached, str has already been
derereferenced in the for loop, so in the case that the if clause would
be entered, the program has already crashed due to a null pointer
dereference.
By checking the content of str before dereferencing, the code in the if
clause is actually useful.
for (ptr=str;*ptr;ptr++) flag|=((*ptr>0 && *ptr<32)||(*ptr=='\"')||(*ptr=='\\'))?1:0;
...
if (!str)
...
2015-10-26 03:08:47 +01:00
Max Bruckner
9cc37a2844
Fix format problem with empty objects
...
When printing empty objects, the closing curly brace was missing one
indentation level.
Example from the output of test_utils:
BEFORE FIX:
{
"foo": "bar",
"child": {
"grandchild": {
}
}
}
AFTER FIX:
{
"foo": "bar",
"child": {
"grandchild": {
}
}
}
2015-10-26 02:43:44 +01:00
Max Bruckner
7c25dc9135
Remove line that will never be executed
2015-10-16 15:01:24 +02:00
Kevin Branigan
8865d869db
cJSON_HasObjectItem didn’t compile
2015-10-01 12:03:27 -04:00
Kevin Branigan
1e1de63244
Merge pull request #13 from rmeertens/master
...
added cJSON_HasObjectItem
2015-10-01 11:37:44 -04:00
Linus Wallgren
e4b96fa820
Handle invalid numbers
...
Previously cJSON generated invalid JSON when a number was infinite or
similar. This patch changes the behaviour to match javascript, that is
to render such a number as null.
2015-10-01 17:27:59 +02:00
Roland Meertens
b175877d8b
+usefull function
2015-09-15 02:40:27 +02:00
Anton Sergeev
74793934ad
Merge latest upstream code (r73) into github fork.
...
Signed-off-by: Anton Sergeev <Anton.Sergeev@elecard.ru>
Conflicts:
cJSON.c
test.c
2015-07-28 03:48:06 +06:00
DongwenHuang
10b888be54
Update cJSON.c
2015-06-15 17:13:22 +08:00
Dave Gamble
1d9b70e706
Fix comment style for proper ansi c compliance.
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@69 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-13 19:07:29 +00:00
Dave Gamble
9d0a4cbf2a
adjust the test very slightly
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@68 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-11 11:34:01 +00:00
Dave Gamble
b44a338c6d
Optimise out escapable array.
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@67 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-11 11:31:35 +00:00
Dave Gamble
3c6b3cc617
start of JSON Patch implementation. cJSON gained a cJSON_InsertItemToArray which pushes elements up by one.
...
This is needed for JSON Patch. Everything but Test is implemented for ApplyPatches.
git-svn-id: svn://svn.code.sf.net/p/cjson/code@65 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-10 14:17:59 +00:00
Dave Gamble
2abfb716d1
fix formatting.
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@62 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:38:18 +00:00
Dave Gamble
d9fc81e6c8
Added buffered printing methods for faster printing.
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@61 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:34:35 +00:00
Dave Gamble
70984d47e9
patch to optimise array/object printing.
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@60 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:28:26 +00:00
Dave Gamble
575724a15f
optimises for number/string print
...
git-svn-id: svn://svn.code.sf.net/p/cjson/code@59 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2015-02-09 17:25:55 +00:00
Rafael Leal Dias
a3eafd540d
Fixed issue withh ansi (single-line comments) and updated Makefile for compiling dynamic and static lib.
2015-01-30 12:06:14 -02:00
Mike Pontillo
cf50682983
Merge latest upstream code into github fork.
...
Conflicts:
cJSON.c
cJSON.h
test.c
2014-05-20 20:03:20 -07:00
Dave Gamble
28691956a6
fix \u parser
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@58 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-19 14:49:06 +00:00
Dave Gamble
c537515c17
inbuilt hex parser for unicode, which ought to be a lot faster.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@57 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-14 13:20:42 +00:00
Dave Gamble
73cc8dd1c4
cJSON_Minify (which strips comments),
...
fixed buffer overflow
const * for array creates
git-svn-id: http://svn.code.sf.net/p/cjson/code@55 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-08-14 12:58:13 +00:00
Dave Gamble
2c9474e9e3
fix non-explicit cast
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@52 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-09 12:55:11 +00:00
Dave Gamble
96c59f3e49
Wire in ParseWithOpts to allow detection of JSON with following garbage.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@50 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-06 12:44:17 +00:00
Dave Gamble
d755436ba7
tests for cJSON_Duplicate, so it will fail by returning 0 if anything fails to allocate
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@49 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 18:26:51 +00:00
Dave Gamble
927aa631b8
Added cJSON_Duplicate. With commentary
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@48 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 18:23:22 +00:00
Dave Gamble
a7fe08778f
bracket logic (to quiet a warning).
...
Fix for potential buffer overflow printing extremely large integers.
git-svn-id: http://svn.code.sf.net/p/cjson/code@47 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:42:42 +00:00
Dave Gamble
8c60f99c72
fix handling of utf16 surrogate pairs!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@46 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:38:48 +00:00
Dave Gamble
8aa084918f
Revert last patch. Simpler fix for empty arrays/objects is to handle them explicitly and then bail.
...
Saves plenty of unnecessary state-tracking.
git-svn-id: http://svn.code.sf.net/p/cjson/code@45 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:27:59 +00:00
Dave Gamble
3ddf3a5911
stable solution for printing arrays - based on patch donated by Jerome Lang.
...
Resolves issue in case malloc(0)!=0.
git-svn-id: http://svn.code.sf.net/p/cjson/code@44 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:14:12 +00:00
Dave Gamble
4678f33b5c
Fix up ANSI issues.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@43 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2013-02-05 17:00:31 +00:00
Dave Gamble
fd1ac4f179
make parse_number more robust!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@42 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-10-10 15:33:19 +00:00
Dave Gamble
0d268cfef7
Update to cJSON! We now support UTF-16 surrogate pairs :)
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@41 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-10-10 15:22:34 +00:00
Kevin Branigan
fc0df31a18
init commit
2011-08-22 00:43:38 -04:00
Dave Gamble
9061b7a7e7
Fix c99 violation!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@40 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-14 21:34:03 +00:00
Dave Gamble
15dada46b5
Fix missing cast for compilation as c++!!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@39 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-07 16:35:13 +00:00
Dave Gamble
6a58ba5285
Include some analysis so that you can debug a failed parse.
...
You really oughtn't go too far with this, because it's only loose information; as I've said before, cJSON +isn't+ a validating parser. But this might give you enough info to save yourself on some rare occasion ;)
git-svn-id: http://svn.code.sf.net/p/cjson/code@38 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 21:22:57 +00:00
Dave Gamble
b5d57642c2
Handle control-chars.
...
In a certain sense, we shouldn't be seeing them, but this way we at least handle them well.
git-svn-id: http://svn.code.sf.net/p/cjson/code@37 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 21:04:46 +00:00
Dave Gamble
b5d2db4d9a
print_object was calling free() rather than cJSON_free() under failure conditions!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@36 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:15:06 +00:00
Dave Gamble
6f51f007a9
cJSON_Parse("") should return 0.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@35 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:12:29 +00:00
Dave Gamble
02d86ef778
Update to permit compilation with gcc -ansi flag
...
(changed all C++ // comments to C /* */ comments).
git-svn-id: http://svn.code.sf.net/p/cjson/code@34 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2011-03-02 19:09:43 +00:00
Dave Gamble
de7afcc458
change firstByteMark to unsigned to prevent constant overflow warning
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@33 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-18 10:40:37 +00:00
Dave Gamble
149d013543
Wrong order for variable declaration.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@32 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-13 22:32:15 +00:00
Dave Gamble
6711153d41
CreateBool, because it's useful ;)
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@31 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-02-12 16:24:54 +00:00
Dave Gamble
3fb3989bb1
All memory allocations are now checked, and should fail gracefully in a low memory environment.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@30 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-27 13:01:15 +00:00
Dave Gamble
7dd9280267
Fix handling of non-ascii characters!
...
Many thanks to an anonymous submitter for this fix!!
git-svn-id: http://svn.code.sf.net/p/cjson/code@29 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-23 12:44:58 +00:00
Dave Gamble
d9840479f5
Include ctype.h for tolower()
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@28 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-07 23:07:58 +00:00
Dave Gamble
ee4ce32ea8
make strcasecmp STABLE if passed a null string
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@27 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2010-01-01 23:13:31 +00:00
Dave Gamble
6420cfe7c4
solve the stricmp/strcasecmp in a dumb way for good.
...
I might make cJSON_strcasecmp hookable, depending on what feedback i get.
There are now +NO+ #ifdef/#endif WINDOWS clauses, just neat ANSI C.
Also, this DOES NOT represent an efficiency hit for parsing, since the casecmp code is ONLY used for retrieval of object values, which would be after the parse stage.
git-svn-id: http://svn.code.sf.net/p/cjson/code@26 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-12-09 15:43:38 +00:00
Dave Gamble
efe33fabbb
ID: 2907153
...
declare variable first, so we're proper c ;)
git-svn-id: http://svn.code.sf.net/p/cjson/code@25 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-12-09 12:31:32 +00:00
Dave Gamble
37963a72b9
Don't crash if someone calls cJSON_Print(0);
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@24 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-26 20:17:25 +00:00
Dave Gamble
091c0676c1
return 0!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@23 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 19:33:40 +00:00
Dave Gamble
341bb3c640
oops! remember to kill dead pointers on Detach!!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@22 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 17:06:26 +00:00
Dave Gamble
79a796aed2
Detatch and Remove objects from Arrays/Objects.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@21 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 17:04:05 +00:00
Dave Gamble
29b085bc5d
Feature Request: 2903802.
...
If you need to add an existing cJSON to a new object, but the existing object
must not be affected by this, use cJSON_AddItemReferenceTo<Array|Object>.
This will make a "reference" to the existing object (which is what you really mean to do),
and allow you to use it with a new object without fear of names being corrupted or things
being deleted.
Think of it like a reference, since that's pretty much what it is.
If you modify the resulting object (i.e. you AddItemReference, then retrieve with GetObjectItem,
and then start adding/replacing) you'll modify the object you pass in (in other words, this
doesn't clone everything, since that would probably end up being wasteful of space), however,
if you add it, and treat it as if it were const, everything will be fine!
git-svn-id: http://svn.code.sf.net/p/cjson/code@20 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 16:52:07 +00:00
Dave Gamble
c4e8954eb2
Feature request: 2903779.
...
Unformatted output. :)
git-svn-id: http://svn.code.sf.net/p/cjson/code@19 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 15:27:39 +00:00
Dave Gamble
501ff3b3d0
if it's a big number, but still an integer, print it exactly!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@18 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-25 15:18:19 +00:00
Dave Gamble
0dbe29ffe8
fix bug 2895595 from jshvrsn whereby values outside of INT_MIN/INT_MAX range are printed incorrectly as ints.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@17 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-11 00:15:53 +00:00
Dave Gamble
991b577247
fix the ReplaceObject functions; tighten them up, add some more checks for stability.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@14 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-10 23:50:43 +00:00
Dave Gamble
b3bd706f8f
prototype versions of ReplaceObject.
...
Based on an idea from Daniel Harcek; these are designed to allow you to replace entries in an object or array with new
values. The old values get deleted and the new ones are wired into place.
This leads to a structure like this:
cJSON_ReplaceItemInObject(myobject, "spooncount", cJSON_CreateNumber(24));
cJSON +NEVER+ type checks, so it's perfectly legal to replace an object with a string (to cJSON) though it may not be in your schema!
git-svn-id: http://svn.code.sf.net/p/cjson/code@13 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-10 23:32:11 +00:00
Dave Gamble
5cca4e2c57
simplify the rendering code so there's no 'realloc' going on.
...
That seemed horribly inefficient to me.
Now we use multiple passes and can test for failure more carefully.
git-svn-id: http://svn.code.sf.net/p/cjson/code@12 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-10 22:57:37 +00:00
Dave Gamble
37da1d2493
Fix for printing values that contain % literals. Thanks to Jimmy Tam!
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@11 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-11-06 15:41:44 +00:00
Dave Gamble
7ca2c994a7
incorporate hooks feature from bug 2883206
...
also new errorhandling for memory failure cases. +I HAVE NOT CHECKED THIS FOR ABILITY TO LEAK!+
git-svn-id: http://svn.code.sf.net/p/cjson/code@10 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-10-29 00:21:54 +00:00
Dave Gamble
c052999a71
fix bug: 2885206, whereby memory would leak in print_object if print_value failed.
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@9 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-10-29 00:06:15 +00:00
Dave Gamble
75e1702659
fix bug: 2859459 (crash when printing JSON)
...
handling of string length was incorrect.
git-svn-id: http://svn.code.sf.net/p/cjson/code@8 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-10-28 23:59:05 +00:00
Dave Gamble
e5fe65f58a
...try that again... better WINDOWS/WIN32/__WIN32__ (for Borland C) sentinelling
...
also missed the casts on realloc()
git-svn-id: http://svn.code.sf.net/p/cjson/code@6 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-09-09 18:56:31 +00:00
Dave Gamble
6d50358e26
Windows/c++ support (with thanks to Ron Hall):
...
added strcasecmp->stricmp
added (char*) casts to all mallocs (as reqd by c++)
added skip(value) to cJSON_Parse to allow for whitespace before the actual data
git-svn-id: http://svn.code.sf.net/p/cjson/code@5 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-09-09 10:44:00 +00:00
Dave Gamble
a4a4e7cbff
make these PROPERLY ansi-c compliant ;)
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@2 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-08-26 03:57:15 +00:00
Dave Gamble
805b652e51
here it is, cJSON 1.0
...
git-svn-id: http://svn.code.sf.net/p/cjson/code@1 e3330c51-1366-4df0-8b21-3ccf24e3d50e
2009-08-26 03:55:20 +00:00