/* control_flow_bug628336.c generated by valac, the Vala compiler * generated from control_flow_bug628336.vala, do not modify */ #include #include #include typedef struct _Block1Data Block1Data; #define _g_free0(var) (var = (g_free (var), NULL)) #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _Block1Data { int _ref_count_; gchar* bar; }; static void _vala_main (void); static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static gboolean _vala_lambda0_ (Block1Data* _data1_); static gboolean __vala_lambda0__gsource_func (gpointer self); static void _vala_array_destroy (gpointer array, gssize array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gssize array_length, GDestroyNotify destroy_func); static Block1Data* block1_data_ref (Block1Data* _data1_) { g_atomic_int_inc (&_data1_->_ref_count_); return _data1_; } static void block1_data_unref (void * _userdata_) { Block1Data* _data1_; _data1_ = (Block1Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { _g_free0 (_data1_->bar); g_slice_free (Block1Data, _data1_); } } static gboolean _vala_lambda0_ (Block1Data* _data1_) { const gchar* _tmp0_; gboolean result; _tmp0_ = _data1_->bar; result = g_strcmp0 (_tmp0_, "bar") == 0; return result; } static gboolean __vala_lambda0__gsource_func (gpointer self) { gboolean result; result = _vala_lambda0_ (self); return result; } static void _vala_main (void) { gchar** foo = NULL; gchar* _tmp0_; gchar* _tmp1_; gchar** _tmp2_; gint foo_length1; gint _foo_size_; gchar** _tmp3_; gint _tmp3__length1; _tmp0_ = g_strdup ("bar"); _tmp1_ = g_strdup ("bar"); _tmp2_ = g_new0 (gchar*, 2 + 1); _tmp2_[0] = _tmp0_; _tmp2_[1] = _tmp1_; foo = _tmp2_; foo_length1 = 2; _foo_size_ = foo_length1; _tmp3_ = foo; _tmp3__length1 = foo_length1; { gchar** bar_collection = NULL; gint bar_collection_length1 = 0; gint _bar_collection_size_ = 0; gint bar_it = 0; bar_collection = _tmp3_; bar_collection_length1 = _tmp3__length1; for (bar_it = 0; bar_it < bar_collection_length1; bar_it = bar_it + 1) { gchar* _tmp4_; gchar* bar = NULL; _tmp4_ = g_strdup (bar_collection[bar_it]); bar = _tmp4_; { Block1Data* _data1_; const gchar* _tmp5_; GSourceFunc f = NULL; gpointer f_target; GDestroyNotify f_target_destroy_notify; GSourceFunc _tmp6_; gpointer _tmp6__target; _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; _data1_->bar = bar; _tmp5_ = _data1_->bar; _vala_assert (g_strcmp0 (_tmp5_, "bar") == 0, "bar == \"bar\""); f = __vala_lambda0__gsource_func; f_target = block1_data_ref (_data1_); f_target_destroy_notify = block1_data_unref; _tmp6_ = f; _tmp6__target = f_target; _vala_assert (_tmp6_ (_tmp6__target), "f ()"); (f_target_destroy_notify == NULL) ? NULL : (f_target_destroy_notify (f_target), NULL); f = NULL; f_target = NULL; f_target_destroy_notify = NULL; block1_data_unref (_data1_); _data1_ = NULL; } } } foo = (_vala_array_free (foo, foo_length1, (GDestroyNotify) g_free), NULL); } int main (int argc, char ** argv) { _vala_main (); return 0; } static void _vala_array_destroy (gpointer array, gssize array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gssize i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gssize array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); }