diff options
-rw-r--r-- | MAINTAINERS | 5 | ||||
-rw-r--r-- | src/vppinfra/cJSON.c | 47 |
2 files changed, 38 insertions, 14 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 6003a817e30..35bdaa33bcc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -728,6 +728,11 @@ M: neale@graphiant.com M: Matthew Smith <mgsmith@netgate.com> F: src/plugins/linux-cp/ +cJSON +I: cjson +M: Ole Troan <ot@cisco.com> +F: src/vppinfra/cJSON.[ch] + THE REST I: misc M: vpp-dev Mailing List <vpp-dev@fd.io> diff --git a/src/vppinfra/cJSON.c b/src/vppinfra/cJSON.c index 4c6a308eece..5b26a4be4e1 100644 --- a/src/vppinfra/cJSON.c +++ b/src/vppinfra/cJSON.c @@ -19,7 +19,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - +/* clang-format off */ /* cJSON */ /* JSON parser in C. */ @@ -78,8 +78,12 @@ #endif #ifndef NAN +#ifdef _WIN32 +#define NAN sqrt (-1.0) +#else #define NAN 0.0/0.0 #endif +#endif typedef struct { const unsigned char *json; @@ -507,11 +511,9 @@ static unsigned char* ensure(printbuffer * const p, size_t needed) return NULL; } - if (newbuffer) - { - memcpy(newbuffer, p->buffer, p->offset + 1); - } - p->hooks.deallocate(p->buffer); + + memcpy (newbuffer, p->buffer, p->offset + 1); + p->hooks.deallocate (p->buffer); } p->length = newsize; p->buffer = newbuffer; @@ -2544,6 +2546,7 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count) } a = cJSON_CreateArray(); + for(i = 0; a && (i < (size_t)count); i++) { n = cJSON_CreateNumber(numbers[i]); @@ -2562,7 +2565,11 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count) } p = n; } - a->child->prev = n; + + if (a && a->child) + { + a->child->prev = n; + } return a; } @@ -2599,7 +2606,11 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count) } p = n; } - a->child->prev = n; + + if (a && a->child) + { + a->child->prev = n; + } return a; } @@ -2618,9 +2629,9 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count) a = cJSON_CreateArray(); - for(i = 0;a && (i < (size_t)count); i++) - { - n = cJSON_CreateNumber(numbers[i]); + for (i = 0; a && (i < (size_t) count); i++) + { + n = cJSON_CreateNumber(numbers[i]); if(!n) { cJSON_Delete(a); @@ -2635,8 +2646,12 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count) suffix_object(p, n); } p = n; - } - a->child->prev = n; + } + + if (a && a->child) + { + a->child->prev = n; + } return a; } @@ -2673,7 +2688,11 @@ CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int co } p = n; } - a->child->prev = n; + + if (a && a->child) + { + a->child->prev = n; + } return a; } |