@@ -575,13 +575,16 @@ static int cfl_to_json(struct cfl_variant *var, flb_sds_t buf)
575575 loop = cfl_array_size (array );
576576
577577 flb_sds_cat_safe (& buf , "[" , 1 );
578- if (loop != 0 ) {
579- for (i = 0 ; i < loop - 1 ; i ++ ) {
580- cfl_to_json (array -> entries [i ], buf );
578+ for (i = 0 ; i < loop ; i ++ ) {
579+ ret = cfl_to_json (array -> entries [i ], buf );
580+ if (ret == -1 ) {
581+ return -1 ;
582+ }
583+
584+ if (i + 1 < loop ) {
581585 flb_sds_cat_safe (& buf , "," , 1 );
582586 }
583587 }
584- cfl_to_json (array -> entries [loop - 1 ], buf );
585588 flb_sds_cat_safe (& buf , "]" , 1 );
586589 break ;
587590 }
@@ -604,9 +607,13 @@ static int cfl_to_json(struct cfl_variant *var, flb_sds_t buf)
604607 if (ret == -1 ) {
605608 return -1 ;
606609 }
607- break ;
610+
611+ if (head -> next != & kvlist -> list ) {
612+ flb_sds_cat_safe (& buf , "," , 1 );
613+ }
608614 }
609615 flb_sds_cat_safe (& buf , "}" , 1 );
616+ break ;
610617 }
611618
612619 return 0 ;
@@ -617,9 +624,9 @@ static flb_sds_t cfl_ra_translate_keymap(struct flb_ra_parser *rp, flb_sds_t buf
617624{
618625 int ret ;
619626 int len ;
620- char * js ;
621627 char str [32 ];
622628 flb_sds_t tmp = NULL ;
629+ flb_sds_t js = NULL ;
623630 struct flb_cfl_ra_value * crv ;
624631
625632 /* Lookup key or subkey value */
@@ -644,10 +651,13 @@ static flb_sds_t cfl_ra_translate_keymap(struct flb_ra_parser *rp, flb_sds_t buf
644651 js = flb_sds_create_size (1024 );
645652 /* Convert cfl_variant to JSON string */
646653 ret = cfl_to_json (& crv -> v , js );
647- if (ret == -1 ) {
654+ if (ret == 0 ) {
648655 len = strlen (js );
649656 tmp = flb_sds_cat (buf , js , len );
650- flb_free (js );
657+ flb_sds_destroy (js );
658+ }
659+ else {
660+ flb_sds_destroy (js );
651661 }
652662 }
653663 else if (crv -> v .type == CFL_VARIANT_BOOL ) {
@@ -808,7 +818,7 @@ int flb_cfl_ra_strcmp(struct flb_cfl_record_accessor *ra, struct cfl_variant var
808818
809819 rp = mk_list_entry_first (& ra -> list , struct flb_ra_parser , _head );
810820 return flb_cfl_ra_key_strcmp (rp -> key -> name , var , rp -> key -> subkeys ,
811- rp -> key -> name , flb_sds_len ( rp -> key -> name ) );
821+ str , len );
812822}
813823
814824/*
0 commit comments