/* structs_bug777194.c generated by valac, the Vala compiler * generated from structs_bug777194.vala, do not modify */ #include #include #include #if !defined(VALA_EXTERN) #if defined(_MSC_VER) #define VALA_EXTERN __declspec(dllexport) extern #elif __GNUC__ >= 4 #define VALA_EXTERN __attribute__((visibility("default"))) extern #else #define VALA_EXTERN extern #endif #endif #define TYPE_FOO (foo_get_type ()) typedef struct _Foo Foo; #define _foo_free0(var) ((var == NULL) ? NULL : (var = (foo_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 _Foo { gint64 foo; gint64 bar; }; VALA_EXTERN GType foo_get_type (void) G_GNUC_CONST ; VALA_EXTERN Foo* foo_dup (const Foo* self); VALA_EXTERN void foo_free (Foo* self); VALA_EXTERN void bar (guint8* a, gint a_length1); static void _vala_main (void); static guint8* _vala_array_dup1 (guint8* self, gssize length); static guint8* _vala_array_dup2 (guint8* self, gssize length); static guint8* _vala_array_dup3 (guint8* self, gssize length); static guint8* _vala_array_dup4 (guint8* self, gssize length); static guint8* _vala_array_dup5 (guint8* self, gssize length); static inline gpointer _vala_memdup2 (gconstpointer mem, gsize byte_size); Foo* foo_dup (const Foo* self) { Foo* dup; dup = g_new0 (Foo, 1); memcpy (dup, self, sizeof (Foo)); return dup; } void foo_free (Foo* self) { g_free (self); } static GType foo_get_type_once (void) { GType foo_type_id; foo_type_id = g_boxed_type_register_static ("Foo", (GBoxedCopyFunc) foo_dup, (GBoxedFreeFunc) foo_free); return foo_type_id; } GType foo_get_type (void) { static volatile gsize foo_type_id__once = 0; if (g_once_init_enter (&foo_type_id__once)) { GType foo_type_id; foo_type_id = foo_get_type_once (); g_once_init_leave (&foo_type_id__once, foo_type_id); } return foo_type_id__once; } void bar (guint8* a, gint a_length1) { Foo* f = NULL; gint f_length1; gint _f_size_; Foo _tmp0_; Foo _tmp1_; f = (Foo*) a; f_length1 = (a_length1 * sizeof (guint8)) / sizeof (Foo); _f_size_ = f_length1; _tmp0_ = f[0]; _vala_assert (_tmp0_.foo == (2LL << 62), "f[0].foo == 2LL << 62"); _tmp1_ = f[0]; _vala_assert (_tmp1_.bar == (2LL << 31), "f[0].bar == 2LL << 31"); } static gpointer _foo_dup0 (gpointer self) { return self ? foo_dup (self) : NULL; } static guint8* _vala_array_dup1 (guint8* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (guint8)); } return NULL; } static guint8* _vala_array_dup2 (guint8* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (guint8)); } return NULL; } static guint8* _vala_array_dup3 (guint8* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (guint8)); } return NULL; } static guint8* _vala_array_dup4 (guint8* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (guint8)); } return NULL; } static guint8* _vala_array_dup5 (guint8* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (guint8)); } return NULL; } static void _vala_main (void) { guint8* tu = NULL; gint tu_length1 = 0; gint _tu_size_ = 0; guint8* to = NULL; gint to_length1 = 0; gint _to_size_ = 0; Foo fstack = {0}; Foo _tmp0_ = {0}; Foo* fheap = NULL; Foo _tmp1_ = {0}; Foo* _tmp2_; guint8* _tmp3_; gint _tmp3__length1; guint8* _tmp4_; gint _tmp4__length1; guint8* _tmp5_; gint _tmp5__length1; guint8* _tmp6_; gint _tmp6__length1; guint8* _tmp7_; gint _tmp7__length1; Foo _tmp8_; Foo _tmp9_; guint8* _tmp10_; gint _tmp10__length1; guint8* _tmp11_; gint _tmp11__length1; Foo _tmp12_; guint8* _tmp13_; gint _tmp13__length1; guint8* _tmp14_; gint _tmp14__length1; guint8* _tmp15_; gint _tmp15__length1; guint8* _tmp16_; gint _tmp16__length1; guint8* _tmp17_; gint _tmp17__length1; guint8* _tmp18_; gint _tmp18__length1; guint8* _tmp19_; gint _tmp19__length1; guint8* _tmp20_; gint _tmp20__length1; gint32 i32 = 0; guint8* _tmp21_; gint _tmp21__length1; guint8* _tmp22_; gint _tmp22__length1; guint8* _tmp23_; gint _tmp23__length1; guint8* _tmp24_; gint _tmp24__length1; guint64 u64 = 0ULL; guint8* _tmp25_; gint _tmp25__length1; guint8* _tmp26_; gint _tmp26__length1; guint8* _tmp27_; gint _tmp27__length1; guint8* _tmp28_; gint _tmp28__length1; _tmp0_.foo = 2LL << 62; _tmp0_.bar = 2LL << 31; fstack = _tmp0_; _tmp1_.foo = 2LL << 62; _tmp1_.bar = 2LL << 31; _tmp2_ = _foo_dup0 (&_tmp1_); fheap = _tmp2_; bar ((guint8*) (&fstack), (gint) (sizeof (Foo) / sizeof (guint8))); tu = (guint8*) (&fstack); tu_length1 = sizeof (Foo) / sizeof (guint8); _tu_size_ = tu_length1; _tmp3_ = tu; _tmp3__length1 = tu_length1; _vala_assert (_tmp3__length1 == 16, "tu.length == 16"); _tmp4_ = tu; _tmp4__length1 = tu_length1; bar (_tmp4_, (gint) _tmp4__length1); _tmp5_ = (((guint8*) (&fstack)) != NULL) ? _vala_array_dup1 ((guint8*) (&fstack), sizeof (Foo) / sizeof (guint8)) : ((guint8*) (&fstack)); _tmp5__length1 = sizeof (Foo) / sizeof (guint8); to = (g_free (to), NULL); to = _tmp5_; to_length1 = _tmp5__length1; _to_size_ = to_length1; _tmp6_ = to; _tmp6__length1 = to_length1; _vala_assert (_tmp6__length1 == 16, "to.length == 16"); _tmp7_ = to; _tmp7__length1 = to_length1; bar (_tmp7_, (gint) _tmp7__length1); _tmp8_ = fstack; bar ((guint8*) (&_tmp8_), (gint) (sizeof (Foo) / sizeof (guint8))); _tmp9_ = fstack; tu = (guint8*) (&_tmp9_); tu_length1 = sizeof (Foo) / sizeof (guint8); _tu_size_ = tu_length1; _tmp10_ = tu; _tmp10__length1 = tu_length1; _vala_assert (_tmp10__length1 == 16, "tu.length == 16"); _tmp11_ = tu; _tmp11__length1 = tu_length1; bar (_tmp11_, (gint) _tmp11__length1); _tmp12_ = fstack; _tmp13_ = (((guint8*) (&_tmp12_)) != NULL) ? _vala_array_dup2 ((guint8*) (&_tmp12_), sizeof (Foo) / sizeof (guint8)) : ((guint8*) (&_tmp12_)); _tmp13__length1 = sizeof (Foo) / sizeof (guint8); to = (g_free (to), NULL); to = _tmp13_; to_length1 = _tmp13__length1; _to_size_ = to_length1; _tmp14_ = to; _tmp14__length1 = to_length1; _vala_assert (_tmp14__length1 == 16, "to.length == 16"); _tmp15_ = to; _tmp15__length1 = to_length1; bar (_tmp15_, (gint) _tmp15__length1); bar ((guint8*) fheap, (gint) (sizeof (Foo) / sizeof (guint8))); tu = (guint8*) fheap; tu_length1 = sizeof (Foo) / sizeof (guint8); _tu_size_ = tu_length1; _tmp16_ = tu; _tmp16__length1 = tu_length1; _vala_assert (_tmp16__length1 == 16, "tu.length == 16"); _tmp17_ = tu; _tmp17__length1 = tu_length1; bar (_tmp17_, (gint) _tmp17__length1); _tmp18_ = (((guint8*) fheap) != NULL) ? _vala_array_dup3 ((guint8*) fheap, sizeof (Foo) / sizeof (guint8)) : ((guint8*) fheap); _tmp18__length1 = sizeof (Foo) / sizeof (guint8); to = (g_free (to), NULL); to = _tmp18_; to_length1 = _tmp18__length1; _to_size_ = to_length1; _tmp19_ = to; _tmp19__length1 = to_length1; _vala_assert (_tmp19__length1 == 16, "to.length == 16"); _tmp20_ = to; _tmp20__length1 = to_length1; bar (_tmp20_, (gint) _tmp20__length1); i32 = (gint32) (2 << 28); tu = (guint8*) (&i32); tu_length1 = sizeof (gint32) / sizeof (guint8); _tu_size_ = tu_length1; _tmp21_ = tu; _tmp21__length1 = tu_length1; _vala_assert (_tmp21__length1 == 4, "tu.length == 4"); tu = (guint8*) (&i32); tu_length1 = sizeof (gint32) / sizeof (guint8); _tu_size_ = tu_length1; _tmp22_ = tu; _tmp22__length1 = tu_length1; _vala_assert (_tmp22__length1 == 4, "tu.length == 4"); _tmp23_ = (((guint8*) (&i32)) != NULL) ? _vala_array_dup4 ((guint8*) (&i32), sizeof (gint32) / sizeof (guint8)) : ((guint8*) (&i32)); _tmp23__length1 = sizeof (gint32) / sizeof (guint8); to = (g_free (to), NULL); to = _tmp23_; to_length1 = _tmp23__length1; _to_size_ = to_length1; _tmp24_ = to; _tmp24__length1 = to_length1; _vala_assert (_tmp24__length1 == 4, "to.length == 4"); u64 = (guint64) (2UL << 30); tu = (guint8*) (&u64); tu_length1 = sizeof (guint64) / sizeof (guint8); _tu_size_ = tu_length1; _tmp25_ = tu; _tmp25__length1 = tu_length1; _vala_assert (_tmp25__length1 == 8, "tu.length == 8"); tu = (guint8*) (&u64); tu_length1 = sizeof (guint64) / sizeof (guint8); _tu_size_ = tu_length1; _tmp26_ = tu; _tmp26__length1 = tu_length1; _vala_assert (_tmp26__length1 == 8, "tu.length == 8"); _tmp27_ = (((guint8*) (&u64)) != NULL) ? _vala_array_dup5 ((guint8*) (&u64), sizeof (guint64) / sizeof (guint8)) : ((guint8*) (&u64)); _tmp27__length1 = sizeof (guint64) / sizeof (guint8); to = (g_free (to), NULL); to = _tmp27_; to_length1 = _tmp27__length1; _to_size_ = to_length1; _tmp28_ = to; _tmp28__length1 = to_length1; _vala_assert (_tmp28__length1 == 8, "to.length == 8"); _foo_free0 (fheap); to = (g_free (to), NULL); } int main (int argc, char ** argv) { _vala_main (); return 0; } static inline gpointer _vala_memdup2 (gconstpointer mem, gsize byte_size) { gpointer new_mem; if (mem && byte_size != 0) { new_mem = g_malloc (byte_size); memcpy (new_mem, mem, byte_size); } else { new_mem = NULL; } return new_mem; }