summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Hawicz <erh+git@nimenees.com>2022-07-24 14:15:42 -0400
committerGitHub <noreply@github.com>2022-07-24 14:15:42 -0400
commit2a2d861bc0c77a97529895665c643389645686b5 (patch)
tree7db2ba90458a360670b2b050e6fb8b026fc59b3c
parentd28ac67dde77566f53a97f22b4ea7cb36afe6582 (diff)
parent213bb5caa11ed2182848d86c86f8e9ab4c75642a (diff)
downloadjson-c-2a2d861bc0c77a97529895665c643389645686b5.tar.gz
Merge pull request #781 from dddaniel/master
Fix memory leak with emtpy strings in json_object_set_string
-rw-r--r--json_object.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/json_object.c b/json_object.c
index e52ca40..581b1e2 100644
--- a/json_object.c
+++ b/json_object.c
@@ -1323,11 +1323,18 @@ static int _json_object_set_string_len(json_object *jso, const char *s, size_t l
// length as int, cap length at INT_MAX.
return 0;
- dstbuf = get_string_component_mutable(jso);
curlen = JC_STRING(jso)->len;
- if (curlen < 0)
- curlen = -curlen;
+ if (curlen < 0) {
+ if (len == 0) {
+ free(JC_STRING(jso)->c_string.pdata);
+ JC_STRING(jso)->len = curlen = 0;
+ } else {
+ curlen = -curlen;
+ }
+ }
+
newlen = len;
+ dstbuf = get_string_component_mutable(jso);
if ((ssize_t)len > curlen)
{