From a607750be1775fa9f74164f8d3768536b86387f6 Mon Sep 17 00:00:00 2001 From: David Steele Date: Mon, 7 Jun 2021 07:46:51 -0400 Subject: [PATCH] Handle NULL VariantList in JSON. This worked if the Variant was NULL but not if the Variant contained a NULL. --- src/common/type/json.c | 9 +++++++-- test/src/module/common/typeJsonTest.c | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/common/type/json.c b/src/common/type/json.c index f8f9f6272..8dd6cc1c1 100644 --- a/src/common/type/json.c +++ b/src/common/type/json.c @@ -957,8 +957,13 @@ jsonFromVar(const Variant *var) { const VariantList *vl = varVarLst(var); - // If not an empty array - if (!varLstEmpty(vl)) + // If null + if (vl == NULL) + { + strCat(jsonStr, NULL_STR); + } + // Else if not an empty array + else if (!varLstEmpty(vl)) { strCatZ(jsonStr, "["); diff --git a/test/src/module/common/typeJsonTest.c b/test/src/module/common/typeJsonTest.c index 8fc2d9dc2..1b561bd10 100644 --- a/test/src/module/common/typeJsonTest.c +++ b/test/src/module/common/typeJsonTest.c @@ -264,6 +264,7 @@ testRun(void) varLstAdd(varVarLst(varListOuter), varNewInt64(9223372036854775807LL)); varLstAdd(varVarLst(varListOuter), varNewInt(2147483647)); varLstAdd(varVarLst(varListOuter), varNewBool(true)); + varLstAdd(varVarLst(varListOuter), varNewVarLst(NULL)); varLstAdd(varVarLst(varListOuter), varNewVarLst(varLstNew())); varLstAdd(varVarLst(varListOuter), NULL); varLstAdd(varVarLst(varListOuter), keyValue); @@ -271,7 +272,7 @@ testRun(void) TEST_ASSIGN(json, jsonFromVar(varListOuter), "VariantList"); TEST_RESULT_STR_Z( json, - "[\"ASTRING\",9223372036854775807,2147483647,true,[],null,{\"backup-info-size-delta\":1982702," + "[\"ASTRING\",9223372036854775807,2147483647,true,null,[],null,{\"backup-info-size-delta\":1982702," "\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1]," @@ -284,7 +285,7 @@ testRun(void) TEST_ASSIGN(json, jsonFromVar(varListOuter), "VariantList - multiple elements"); TEST_RESULT_STR_Z( json, - "[\"ASTRING\",9223372036854775807,2147483647,true,[],null,{\"backup-info-size-delta\":1982702," + "[\"ASTRING\",9223372036854775807,2147483647,true,null,[],null,{\"backup-info-size-delta\":1982702," "\"backup-prior\":\"20161219-212741F_20161219-212803I\"," "\"backup-reference\":[\"20161219-212741F\",\"20161219-212741F_20161219-212803I\",null]," "\"backup-timestamp-start\":1482182951,\"checksum-page-error\":[1],"