[g-a-devel]Re: a more substantial bug report ...
- From: Michael Meeks <michael ximian com>
- To: Bill Haneman <bill haneman sun com>
- Cc: accessibility mailing list <gnome-accessibility-devel gnome org>
- Subject: [g-a-devel]Re: a more substantial bug report ...
- Date: 14 Mar 2002 00:49:31 +0000
Hi Bill,
On Wed, 2002-03-13 at 22:42, Bill Haneman wrote:
> I committed a few fixes for nasty bugs. However I don't seem to have
> solved the root cause of this problem.
Ok - I had another look, and getting a bit bleary eyed. I think the
problem is here:
SpiAccessible *
spi_accessible_construct (GType type, AtkObject *o)
{
SpiAccessible *retval;
CORBA_Environment ev;
CORBA_exception_init (&ev);
g_assert (o);
g_assert (g_type_is_a (type, SPI_ACCESSIBLE_TYPE));
if ((retval = g_hash_table_lookup (get_public_refs (), o)))
{
bonobo_object_ref (BONOBO_OBJECT (retval));
return retval;
}
else
The first path is called - since we're getting a new SpiAccessible for
the AtkObject - this is a problem since we're assuming that the returned
type will be of 'type' but in fact we're asking for it to be a different
[libgail-gnome] type now instead.
Thus (I imagine) we trample over memory, and get a corrupted answer of
some sort. This might explain why we get the problem going up but not
going down the tree - inasmuch that we go back up, and re-touch already
instantiated AtkObjects that we then try to change the size of.
How does that sound as an explanation ? Problem is, it's not obvious
how to fix, since we rely on this hash table to provide pointer & CORBA
reference identity for identical objects.
So - it would seem that we need to be able to instantiate these
'strange' Accessibles right the first time, instead of coming back and
re-touching them. Removing the path above results in no crash, but an
infinite recursion, and CORBA reference comparison problems ;-)
Hope that helps track it,
Regards,
Michael.
--
mmeeks gnu org <><, Pseudo Engineer, itinerant idiot
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]