diff --git a/tiny-json.c b/tiny-json.c index 12a1b9a..cf0f7d2 100644 --- a/tiny-json.c +++ b/tiny-json.c @@ -300,11 +300,12 @@ static char* numValue( char* ptr, json_t* property ) { * @param property The handler of the property to be added. */ static void add( json_t* obj, json_t* property ) { property->sibling = 0; - if ( !obj->u.child ) obj->u.child = property; - else { - json_t* iter; - for( iter = obj->u.child; iter->sibling; iter = iter->sibling ); - iter->sibling = property; + if ( !obj->u.child ){ + obj->u.child = property; + obj->u.last_child = property; + } else { + obj->u.last_child->sibling = property; + obj->u.last_child = property; } } diff --git a/tiny-json.h b/tiny-json.h index 78e4e19..365ce7a 100644 --- a/tiny-json.h +++ b/tiny-json.h @@ -43,7 +43,10 @@ typedef struct json_s { char const* name; union { char const* value; - struct json_s* child; + struct { + struct json_s* child; + struct json_s* last_child; + }; } u; jsonType_t type; } json_t;