summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS5
-rw-r--r--src/vppinfra/cJSON.c47
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;
}