X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Flib%2Fjson.c;fp=libcitadel%2Flib%2Fjson.c;h=7f611818f8712169d16786d0bf3be7437cf30e68;hb=27cb58901ead4e6632e8fbf97d8c2053e5b7ff59;hp=b16674589fd68ec0925c642cf9fa91cd47b5f2d2;hpb=351c06b478ca3292be86472f76becbd68df8c1f9;p=citadel.git diff --git a/libcitadel/lib/json.c b/libcitadel/lib/json.c index b16674589..7f611818f 100644 --- a/libcitadel/lib/json.c +++ b/libcitadel/lib/json.c @@ -121,7 +121,7 @@ JsonValue *NewJsonBigNumber(const char *Key, long keylen, double Number) } -JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe) +JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe, int copy_or_smash) { JsonValue *Ret; @@ -132,7 +132,18 @@ JsonValue *NewJsonString(const char *Key, long keylen, StrBuf *CopyMe) { Ret->Name = NewStrBufPlain(Key, keylen); } - Ret->Value = NewStrBufDup(CopyMe); + if (copy_or_smash == NEWJSONSTRING_COPYBUF) + { + Ret->Value = NewStrBufDup(CopyMe); + } + else if (copy_or_smash == NEWJSONSTRING_SMASHBUF) + { + Ret->Value = CopyMe; + } + else + { + Ret->Value = NULL; // error condition + } return Ret; }