@@ -157,7 +157,14 @@ static int decode_labels(struct cmt *cmt,
157157 }
158158 label_k = cfl_sds_create_len (label_kv , colon - label_kv );
159159 if (label_k == NULL ) {
160+ for (label_index = 0 ; label_index < 128 ; label_index ++ ) {
161+ if (value_index_list [label_index ] != NULL ) {
162+ cfl_sds_destroy (value_index_list [label_index ]);
163+ }
164+ }
165+
160166 free (value_index_list );
167+
161168 if (kvs != NULL ) {
162169 cfl_utils_split_free (kvs );
163170 }
@@ -167,7 +174,15 @@ static int decode_labels(struct cmt *cmt,
167174 label_v = cfl_sds_create_len (colon + 1 , strlen (label_kv ) - strlen (label_k ) - 1 );
168175 if (label_v == NULL ) {
169176 cfl_sds_destroy (label_k );
177+
178+ for (label_index = 0 ; label_index < 128 ; label_index ++ ) {
179+ if (value_index_list [label_index ] != NULL ) {
180+ cfl_sds_destroy (value_index_list [label_index ]);
181+ }
182+ }
183+
170184 free (value_index_list );
185+
171186 if (kvs != NULL ) {
172187 cfl_utils_split_free (kvs );
173188 }
@@ -190,7 +205,15 @@ static int decode_labels(struct cmt *cmt,
190205 if (label_index > 127 ) {
191206 cfl_sds_destroy (label_k );
192207 cfl_sds_destroy (label_v );
208+
209+ for (label_index = 0 ; label_index < 128 ; label_index ++ ) {
210+ if (value_index_list [label_index ] != NULL ) {
211+ cfl_sds_destroy (value_index_list [label_index ]);
212+ }
213+ }
214+
193215 free (value_index_list );
216+
194217 if (kvs != NULL ) {
195218 cfl_utils_split_free (kvs );
196219 }
@@ -227,20 +250,18 @@ static int decode_labels(struct cmt *cmt,
227250 }
228251 }
229252
230- for (map_label_index = 0 ;
231- result == CMT_DECODE_STATSD_SUCCESS &&
232- map_label_index < map_label_count ;
233- map_label_index ++ ) {
234- label_v = (cfl_sds_t ) value_index_list [map_label_index ];
235- cfl_sds_destroy (label_v );
253+ for (label_index = 0 ; label_index < 128 ; label_index ++ ) {
254+ if (value_index_list [label_index ] != NULL ) {
255+ cfl_sds_destroy (value_index_list [label_index ]);
256+ }
236257 }
237258
259+ free (value_index_list );
260+
238261 if (kvs != NULL ) {
239262 cfl_utils_split_free (kvs );
240263 }
241264
242- free (value_index_list );
243-
244265 return result ;
245266}
246267
0 commit comments