* add .clang-format for automated code formatting
* automatic code formatting
* move config.mk below all target to allow custom non-default build targets
* add license to the top of the file
* use correct header file guards syntax
* convert to single-header, header-only library
* update makefile to use jsmn as a header-only library
* update readme
* add changed from PR #143
* fix clang warnings
* add changes from PR #142
* add consts as per PR #134
The current test looks for success, but since there are
no surrounding {}s the test fails. Add them in and add
a test like the one that we replace but only in the
non-strict code path.
Specify the argument after JSMN_PRIMITIVE as "0" instead of 0 so
that weird things don't happen on OSX due to using it later with
`va_arg(..., char *)` in `vtokeq`.
Prior to this commit the output of deheader was:
remove <stdlib.h> from ./jsmn.c
in ./example/jsondump.c, realloc() portability requires <unistd.h>.
in ./example/simple.c, strtol() portability requires <stdlib.h>.
saw 4 files, 16 includes, 1 removable
Memory reallocation with old data pointer handling is done by means
of realloc_it() function.
Tiny inline function realloc_it() is a wrapper function for standart
realloc() which frees old memory pointer and prints errno to stderr
if realloc fails.
When realloc() function fails it returns NULL pointer.
But old data pointer remains valid in such a case.
It's a mistake to use old data pointer to store new
pointer returned by realloc. In case of realloc failure,
pointer is overwritten with NULL value, but old used memory
remains unreferenced and could not be even freed anymore.
Such mistakes could lead to memory leaks.