27
27
28
28
int json_variant_new (JsonVariant * * ret , JsonVariantType type ) {
29
29
JsonVariant * v ;
30
+
30
31
v = new0 (JsonVariant , 1 );
31
32
if (!v )
32
33
return - ENOMEM ;
@@ -36,6 +37,8 @@ int json_variant_new(JsonVariant **ret, JsonVariantType type) {
36
37
}
37
38
38
39
static int json_variant_deep_copy (JsonVariant * ret , JsonVariant * variant ) {
40
+ int r ;
41
+
39
42
assert (ret );
40
43
assert (variant );
41
44
@@ -47,18 +50,18 @@ static int json_variant_deep_copy(JsonVariant *ret, JsonVariant *variant) {
47
50
if (!ret -> string )
48
51
return - ENOMEM ;
49
52
} else if (variant -> type == JSON_VARIANT_ARRAY || variant -> type == JSON_VARIANT_OBJECT ) {
53
+ size_t i ;
54
+
50
55
ret -> objects = new0 (JsonVariant , variant -> size );
51
56
if (!ret -> objects )
52
57
return - ENOMEM ;
53
58
54
- for (unsigned i = 0 ; i < variant -> size ; ++ i ) {
55
- int r ;
59
+ for (i = 0 ; i < variant -> size ; ++ i ) {
56
60
r = json_variant_deep_copy (& ret -> objects [i ], & variant -> objects [i ]);
57
61
if (r < 0 )
58
62
return r ;
59
63
}
60
- }
61
- else
64
+ } else
62
65
ret -> value = variant -> value ;
63
66
64
67
return 0 ;
@@ -72,7 +75,6 @@ static JsonVariant *json_variant_unref_inner(JsonVariant *variant) {
72
75
73
76
if (variant -> type == JSON_VARIANT_ARRAY || variant -> type == JSON_VARIANT_OBJECT )
74
77
return json_object_unref (variant );
75
-
76
78
else if (variant -> type == JSON_VARIANT_STRING )
77
79
free (variant -> string );
78
80
@@ -91,11 +93,14 @@ static JsonVariant *json_raw_unref(JsonVariant *variant, size_t size) {
91
93
}
92
94
93
95
static JsonVariant * json_object_unref (JsonVariant * variant ) {
96
+ size_t i ;
97
+
94
98
assert (variant );
99
+
95
100
if (!variant -> objects )
96
101
return NULL ;
97
102
98
- for (unsigned i = 0 ; i < variant -> size ; ++ i )
103
+ for (i = 0 ; i < variant -> size ; ++ i )
99
104
json_variant_unref_inner (& variant -> objects [i ]);
100
105
101
106
free (variant -> objects );
@@ -119,6 +124,7 @@ static JsonVariant **json_variant_array_unref(JsonVariant **variant) {
119
124
120
125
return NULL ;
121
126
}
127
+
122
128
DEFINE_TRIVIAL_CLEANUP_FUNC (JsonVariant * * , json_variant_array_unref );
123
129
124
130
JsonVariant * json_variant_unref (JsonVariant * variant ) {
@@ -127,7 +133,6 @@ JsonVariant *json_variant_unref(JsonVariant *variant) {
127
133
128
134
if (variant -> type == JSON_VARIANT_ARRAY || variant -> type == JSON_VARIANT_OBJECT )
129
135
json_object_unref (variant );
130
-
131
136
else if (variant -> type == JSON_VARIANT_STRING )
132
137
free (variant -> string );
133
138
@@ -174,11 +179,13 @@ JsonVariant *json_variant_element(JsonVariant *variant, unsigned index) {
174
179
}
175
180
176
181
JsonVariant * json_variant_value (JsonVariant * variant , const char * key ) {
182
+ size_t i ;
183
+
177
184
assert (variant );
178
185
assert (variant -> type == JSON_VARIANT_OBJECT );
179
186
assert (variant -> objects );
180
187
181
- for (unsigned i = 0 ; i < variant -> size ; i += 2 ) {
188
+ for (i = 0 ; i < variant -> size ; i += 2 ) {
182
189
JsonVariant * p = & variant -> objects [i ];
183
190
if (p -> type == JSON_VARIANT_STRING && streq (key , p -> string ))
184
191
return & variant -> objects [i + 1 ];
@@ -624,9 +631,11 @@ static int json_scoped_parse(JsonVariant **tokens, size_t *i, size_t n, JsonVari
624
631
assert (scope );
625
632
626
633
while ((var = * i < n ? tokens [(* i )++ ] : NULL ) != NULL ) {
627
- bool stopper = ! json_is_value ( var ) && var -> value . integer == terminator ;
634
+ bool stopper ;
628
635
int r ;
629
636
637
+ stopper = !json_is_value (var ) && var -> value .integer == terminator ;
638
+
630
639
if (stopper ) {
631
640
if (state != STATE_COMMA && size > 0 )
632
641
goto error ;
@@ -655,7 +664,7 @@ static int json_scoped_parse(JsonVariant **tokens, size_t *i, size_t n, JsonVari
655
664
state = STATE_VALUE ;
656
665
}
657
666
else if (state == STATE_VALUE ) {
658
- _cleanup_jsonunref_ JsonVariant * v = NULL ;
667
+ _cleanup_json_variant_unref_ JsonVariant * v = NULL ;
659
668
size_t toadd = arr ? 1 : 2 ;
660
669
661
670
if (!json_is_value (var )) {
@@ -723,7 +732,7 @@ static int json_parse_tokens(JsonVariant **tokens, size_t ntokens, JsonVariant *
723
732
size_t it = 0 ;
724
733
int r ;
725
734
JsonVariant * e ;
726
- _cleanup_jsonunref_ JsonVariant * p = NULL ;
735
+ _cleanup_json_variant_unref_ JsonVariant * p = NULL ;
727
736
728
737
assert (tokens );
729
738
assert (ntokens );
@@ -767,8 +776,8 @@ static int json_tokens(const char *string, size_t size, JsonVariant ***tokens, s
767
776
768
777
p = buf ;
769
778
for (;;) {
779
+ _cleanup_json_variant_unref_ JsonVariant * var = NULL ;
770
780
_cleanup_free_ char * rstr = NULL ;
771
- _cleanup_jsonunref_ JsonVariant * var = NULL ;
772
781
773
782
t = json_tokenize (& p , & rstr , & v , & json_state , NULL );
774
783
0 commit comments