@@ -1679,34 +1679,26 @@ static int json_transform_array_or_struct(sd_bus_message *m, JsonVariant **ret)
16791679 assert (m );
16801680 assert (ret );
16811681
1682+ CLEANUP_ARRAY (elements , n_elements , json_variant_unref_many );
1683+
16821684 for (;;) {
16831685 r = sd_bus_message_at_end (m , false);
1684- if (r < 0 ) {
1685- bus_log_parse_error (r );
1686- goto finish ;
1687- }
1686+ if (r < 0 )
1687+ return bus_log_parse_error (r );
16881688 if (r > 0 )
16891689 break ;
16901690
1691- if (!GREEDY_REALLOC (elements , n_elements + 1 )) {
1692- r = log_oom ();
1693- goto finish ;
1694- }
1691+ if (!GREEDY_REALLOC (elements , n_elements + 1 ))
1692+ return log_oom ();
16951693
16961694 r = json_transform_one (m , elements + n_elements );
16971695 if (r < 0 )
1698- goto finish ;
1696+ return r ;
16991697
17001698 n_elements ++ ;
17011699 }
17021700
1703- r = json_variant_new_array (ret , elements , n_elements );
1704-
1705- finish :
1706- json_variant_unref_many (elements , n_elements );
1707- free (elements );
1708-
1709- return r ;
1701+ return json_variant_new_array (ret , elements , n_elements );
17101702}
17111703
17121704static int json_transform_variant (sd_bus_message * m , const char * contents , JsonVariant * * ret ) {
@@ -1737,15 +1729,15 @@ static int json_transform_dict_array(sd_bus_message *m, JsonVariant **ret) {
17371729 assert (m );
17381730 assert (ret );
17391731
1732+ CLEANUP_ARRAY (elements , n_elements , json_variant_unref_many );
1733+
17401734 for (;;) {
17411735 const char * contents ;
17421736 char type ;
17431737
17441738 r = sd_bus_message_at_end (m , false);
1745- if (r < 0 ) {
1746- bus_log_parse_error (r );
1747- goto finish ;
1748- }
1739+ if (r < 0 )
1740+ return bus_log_parse_error (r );
17491741 if (r > 0 )
17501742 break ;
17511743
@@ -1755,43 +1747,31 @@ static int json_transform_dict_array(sd_bus_message *m, JsonVariant **ret) {
17551747
17561748 assert (type == 'e' );
17571749
1758- if (!GREEDY_REALLOC (elements , n_elements + 2 )) {
1759- r = log_oom ();
1760- goto finish ;
1761- }
1750+ if (!GREEDY_REALLOC (elements , n_elements + 2 ))
1751+ return log_oom ();
17621752
17631753 r = sd_bus_message_enter_container (m , type , contents );
1764- if (r < 0 ) {
1765- bus_log_parse_error (r );
1766- goto finish ;
1767- }
1754+ if (r < 0 )
1755+ return bus_log_parse_error (r );
17681756
17691757 r = json_transform_one (m , elements + n_elements );
17701758 if (r < 0 )
1771- goto finish ;
1759+ return r ;
17721760
17731761 n_elements ++ ;
17741762
17751763 r = json_transform_one (m , elements + n_elements );
17761764 if (r < 0 )
1777- goto finish ;
1765+ return r ;
17781766
17791767 n_elements ++ ;
17801768
17811769 r = sd_bus_message_exit_container (m );
1782- if (r < 0 ) {
1783- bus_log_parse_error (r );
1784- goto finish ;
1785- }
1770+ if (r < 0 )
1771+ return bus_log_parse_error (r );
17861772 }
17871773
1788- r = json_variant_new_object (ret , elements , n_elements );
1789-
1790- finish :
1791- json_variant_unref_many (elements , n_elements );
1792- free (elements );
1793-
1794- return r ;
1774+ return json_variant_new_object (ret , elements , n_elements );
17951775}
17961776
17971777static int json_transform_one (sd_bus_message * m , JsonVariant * * ret ) {
0 commit comments