diff --git a/src/rjp_object.c b/src/rjp_object.c index 464cbd5..c280883 100644 --- a/src/rjp_object.c +++ b/src/rjp_object.c @@ -51,7 +51,8 @@ RJP_value* rjp_new_member_steal_key(RJP_value* dest, char* key, RJP_index keylen if(!key) return NULL; if(!keylen) - keylen = strlen(key); + if(!(keylen = strlen(key))) + return NULL; switch(dest->type){ case rjp_json_object: return irjp_add_unordered_member(dest, key, keylen); @@ -65,7 +66,8 @@ RJP_value* rjp_new_member(RJP_value* dest, const char* key, RJP_index keylen){ if(!key) return NULL; if(!keylen) - keylen = rjp_escape_strlen(key); + if(!(keylen = rjp_escape_strlen(key))) + return NULL; char* newkey = rjp_alloc(keylen+1); rjp_escape_strcpy(newkey, key); newkey[keylen] = 0; @@ -123,7 +125,7 @@ void rjp_set_key(RJP_value* dest, const char* key, RJP_index keylen){ } char* newkey = rjp_alloc(keylen + 1); strncpy(newkey, key, keylen+1); - rjp_set_key(dest, newkey, keylen); + rjp_set_key_steal(dest, newkey, keylen); } void rjp_set_key_steal(RJP_value* dest, char* key, RJP_index keylen){ if(key){