From: Ben Pfaff Date: Wed, 30 Jun 2010 20:57:24 +0000 (-0700) Subject: json: Better handle JSON objects with duplicate names. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=597cf5a1c197e269ad4376364422e23f5405105f;p=openvswitch json: Better handle JSON objects with duplicate names. RFC 4627 (which defines JSON) says: The names within an object SHOULD be unique. In my view, this means that the treatment of duplicate names within a JSON object is more or less up to the implementation. Until now, the OVS JSON parser has dealt with duplicates fairly badly: they all get shoved into the hash table and you get one or the other value semi-randomly (typically the one added later). This commit makes the behavior predictable: old values are deleted and replaced by newer values. --- diff --git a/lib/json.c b/lib/json.c index 10fa3c12..d26c89ed 100644 --- a/lib/json.c +++ b/lib/json.c @@ -277,7 +277,7 @@ json_real_create(double real) void json_object_put(struct json *json, const char *name, struct json *value) { - shash_add(json->u.object, name, value); + json_destroy(shash_replace(json->u.object, name, value)); } void