]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Fix json parsing to handle empty objects and ensure hm_ilist is properly set on htsms... 92/head
authorAdam Sutton <dev@adamsutton.me.uk>
Fri, 15 Jun 2012 10:40:01 +0000 (11:40 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Fri, 15 Jun 2012 10:40:01 +0000 (11:40 +0100)
src/htsmsg.c
src/htsmsg_json.c

index c74a3afcc7ffd365907c6f0887b2f1192b64a264..6de14e4e94225468b2801f33f9b77df6b719f7ba 100644 (file)
@@ -258,6 +258,7 @@ htsmsg_add_msg(htsmsg_t *msg, const char *name, htsmsg_t *sub)
 
   assert(sub->hm_data == NULL);
   TAILQ_MOVE(&f->hmf_msg.hm_fields, &sub->hm_fields, hmf_link);
+  f->hmf_msg.hm_islist = sub->hm_islist;
   free(sub);
 }
 
@@ -275,6 +276,7 @@ htsmsg_add_msg_extname(htsmsg_t *msg, const char *name, htsmsg_t *sub)
 
   assert(sub->hm_data == NULL);
   TAILQ_MOVE(&f->hmf_msg.hm_fields, &sub->hm_fields, hmf_link);
+  f->hmf_msg.hm_islist = sub->hm_islist;
   free(sub);
 }
 
index 88cd0e31369879a8e8a59666767f73e1676b8733..a302247dc8a6c4260a767d417a57eec6d41d7025 100644 (file)
@@ -233,7 +233,10 @@ htsmsg_json_parse_object(const char *s, const char **endp)
 
   r = htsmsg_create_map();
   
-  while(1) {
+  while(*s > 0 && *s < 33)
+    s++;
+
+  if(*s != '}') while(1) {
 
     if((name = htsmsg_json_parse_string(s, &s2)) == NULL) {
       htsmsg_destroy(r);