conform: fix stack corruption in test-behaviours.c

The test was calling g_object_get to fetch the "opacity-start" property
(unsigned int) into a guint8 local variable. It's a bit of a mean trap
given that the getter function returns guint8 values so this also adds a
comment explaining what's going on.
This commit is contained in:
Robert Bragg 2010-02-09 13:00:39 +00:00
parent a02253f19a
commit e46db37c03

View File

@ -19,6 +19,7 @@ opacity_behaviour (BehaviourFixture *fixture)
{ {
ClutterBehaviour *behaviour; ClutterBehaviour *behaviour;
guint8 start, end; guint8 start, end;
guint starti;
behaviour = clutter_behaviour_opacity_new (fixture->alpha, 0, 255); behaviour = clutter_behaviour_opacity_new (fixture->alpha, 0, 255);
g_assert (CLUTTER_IS_BEHAVIOUR_OPACITY (behaviour)); g_assert (CLUTTER_IS_BEHAVIOUR_OPACITY (behaviour));
@ -38,14 +39,16 @@ opacity_behaviour (BehaviourFixture *fixture)
clutter_behaviour_opacity_set_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour), clutter_behaviour_opacity_set_bounds (CLUTTER_BEHAVIOUR_OPACITY (behaviour),
255, 255,
0); 0);
/* XXX: The gobject property is actually a unsigned int not unsigned char
start = 0; * property so we have to be careful not to corrupt the stack by passing
g_object_get (G_OBJECT (behaviour), "opacity-start", &start, NULL); * a guint8 pointer here... */
starti = 0;
g_object_get (G_OBJECT (behaviour), "opacity-start", &starti, NULL);
if (g_test_verbose ()) if (g_test_verbose ())
g_print ("BehaviourOpacity:start = %d (expected: 255)\n", start); g_print ("BehaviourOpacity:start = %d (expected: 255)\n", start);
g_assert_cmpint (start, ==, 255); g_assert_cmpint (starti, ==, 255);
g_object_unref (behaviour); g_object_unref (behaviour);
} }