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:
parent
a02253f19a
commit
e46db37c03
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user