<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>31044</bug_id>
          
          <creation_ts>2009-11-02 22:02:23 -0800</creation_ts>
          <short_desc>[Gtk] assertion when webkit_accessible_get_index_in_parent attempts to get parent of the web view</short_desc>
          <delta_ts>2009-11-04 02:36:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>25531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joanmarie Diggs">jdiggs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>walker.willie</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>159987</commentid>
    <comment_count>0</comment_count>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-11-02 22:02:23 -0800</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #27011 +++

The web view claims to be an orphan. Orphans don&apos;t have an index in their supposedly non-existent parent. Attempting to get the index under these circumstances triggers an assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159991</commentid>
    <comment_count>1</comment_count>
      <attachid>42361</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-11-02 22:16:19 -0800</bug_when>
    <thetext>Created attachment 42361
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>159996</commentid>
    <comment_count>2</comment_count>
      <attachid>42361</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-11-02 23:29:50 -0800</bug_when>
    <thetext>Comment on attachment 42361
proposed patch

&gt; +static AtkObject* webkit_accessible_get_parent(AtkObject* object)
&gt; +{
&gt; +    AccessibilityObject* coreParent = core(object)-&gt;parentObjectUnignored();
&gt; +    if (!coreParent &amp;&amp; core(object)-&gt;isWebArea())
&gt; +        return atkParentOfWebView(object);
&gt; +
&gt; +    if (!coreParent)
&gt; +        return NULL;

return 0;

&gt; +
&gt; +    return coreParent-&gt;wrapper();
&gt; +}
&gt; +
&gt;  static gint webkit_accessible_get_n_children(AtkObject* object)
&gt;  {
&gt;      return core(object)-&gt;children().size();
&gt; @@ -254,7 +266,16 @@ static gint webkit_accessible_get_index_in_parent(AtkObject* object)
&gt;      AccessibilityObject* coreObject = core(object);
&gt;      AccessibilityObject* parent = coreObject-&gt;parentObjectUnignored();
&gt;  
&gt; -    g_return_val_if_fail(parent, 0);
&gt; +    if (!parent &amp;&amp; core(object)-&gt;isWebArea()) {
&gt; +        AtkObject* atkParent = atkParentOfWebView(object);
&gt; +        if (!atkParent)
&gt; +            return -1;
&gt; +
&gt; +        unsigned count = atk_object_get_n_accessible_children(atkParent);
&gt; +        for (unsigned i = 0; i &lt; count; ++i)
&gt; +            if (atk_object_ref_accessible_child(atkParent, i) == object)

This is doing a g_object_ref on each child, and then letting it go, so it&apos;s leaking all of them basically. You need to use GOwnPtr here, or similar, so that the references go away when you exit the function.

&gt; +                return i;
&gt; +    }
&gt;  
&gt;      AccessibilityObject::AccessibilityChildrenVector children = parent-&gt;children();
&gt;      unsigned count = children.size();
&gt; @@ -263,7 +284,7 @@ static gint webkit_accessible_get_index_in_parent(AtkObject* object)
&gt;              return i;
&gt;      }
&gt;  
&gt; -    return 0;
&gt; +    return -1;
&gt;  }
&gt;  
&gt;  static AtkAttributeSet* addAttributeToSet(AtkAttributeSet* attributeSet, const char* name, const char* value)
&gt; -- 
&gt; 1.6.3.3
&gt; 

r- for those two issues, but looks good to me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160312</commentid>
    <comment_count>3</comment_count>
      <attachid>42450</attachid>
    <who name="Joanmarie Diggs">jdiggs</who>
    <bug_when>2009-11-03 21:37:21 -0800</bug_when>
    <thetext>Created attachment 42450
use g_object_unref to free children (?)

&gt; &gt; -    g_return_val_if_fail(parent, 0);
&gt; &gt; +    if (!parent &amp;&amp; core(object)-&gt;isWebArea()) {
&gt; &gt; +        AtkObject* atkParent = atkParentOfWebView(object);
&gt; &gt; +        if (!atkParent)
&gt; &gt; +            return -1;
&gt; &gt; +
&gt; &gt; +        unsigned count = atk_object_get_n_accessible_children(atkParent);
&gt; &gt; +        for (unsigned i = 0; i &lt; count; ++i)
&gt; &gt; +            if (atk_object_ref_accessible_child(atkParent, i) == object)
&gt; 
&gt; This is doing a g_object_ref on each child, and then letting it go, so it&apos;s
&gt; leaking all of them basically. You need to use GOwnPtr here, or similar, so
&gt; that the references go away when you exit the function.

Oops. Thanks for this. At the moment, I&apos;m leaning towards &quot;similar&quot;. :-) (Can I just do a g_object_unref instead??)

But I would like to understand this.... I tried:

    [...]
    GOwnPtr&lt;AtkObject&gt; child(atk_object_ref_accessible_child(atkParent, i));
    if (child == object)
        return i;

This is working, we get a match, and we attempt to return i. At which point, GtkLauncher aborts. :-(

*** glibc detected *** /home/jd/WebKit/WebKitBuild/Release/Programs/GtkLauncher: double free or corruption (out): 0x08d1aa28 ***

~~~~~~~~~~~~~
Thread 2 (Thread 0xb7141b70 (LWP 9857)):
#0  0x003cf422 in __kernel_vsyscall ()
#1  0x004cce15 in pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/i386/i686/../i486/pthread_cond_wait.S:122
#2  0x007b4d07 in WTF::TCMalloc_PageHeap::scavengerThread() () from /home/jd/WebKit/WebKitBuild/Release/.libs/libwebkit-1.0.so.2
#3  0x007b4d41 in WTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /home/jd/WebKit/WebKitBuild/Release/.libs/libwebkit-1.0.so.2
#4  0x004c880e in start_thread (arg=0xb7141b70) at pthread_create.c:300
#5  0x067f37ee in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:130

Thread 1 (Thread 0xb72fa760 (LWP 9851)):
#0  0x003cf422 in __kernel_vsyscall ()
#1  0x067514d1 in *__GI_raise (sig=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0x06754932 in *__GI_abort () at abort.c:92
#3  0x06787ee5 in __libc_message (do_abort=2, fmt=0x684b438 &quot;*** glibc detected *** %s: %s: 0x%s ***\n&quot;)
    at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#4  0x06791ff1 in malloc_printerr (action=&lt;value optimized out&gt;, str=0x6 &lt;Address 0x6 out of bounds&gt;, ptr=0x8d1aa28) at malloc.c:6217
#5  0x067936f2 in _int_free (av=&lt;value optimized out&gt;, p=&lt;value optimized out&gt;) at malloc.c:4750
#6  0x0679679d in *__GI___libc_free (mem=0x8d1aa28) at malloc.c:3716
#7  0x0856a186 in g_free () from /lib/libglib-2.0.so.0
#8  0x00e29dd2 in webkit_accessible_get_index_in_parent(_AtkObject*) () from /home/jd/WebKit/WebKitBuild/Release/.libs/libwebkit-1.0.so.2
#9  0x001aff72 in atk_object_get_index_in_parent (accessible=0x8d1aa28) at atkobject.c:961
#10 0x08279d26 in impl_accessibility_accessible_get_index_in_parent (servant=0x9087594, ev=0xbfc34d3c) at accessible.c:285
#11 0x08275fa6 in _ORBIT_skel_small_Accessibility_Accessible_getIndexInParent (_o_servant=0x9087594, _o_retval=0xbfc34b90, _o_args=0x0, 
    _o_ctx=0xbfc34c28, _o_ev=0xbfc34d3c, _impl_getIndexInParent=0x8279d00 &lt;impl_accessibility_accessible_get_index_in_parent&gt;)
    at Accessibility-common.c:124
#12 0x05ccc537 in ?? () from /usr/lib/libORBit-2.so.0
#13 0x05cd2b45 in ORBit_OAObject_invoke () from /usr/lib/libORBit-2.so.0
#14 0x05cbee63 in ORBit_small_invoke_adaptor () from /usr/lib/libORBit-2.so.0
#15 0x05cd0649 in ?? () from /usr/lib/libORBit-2.so.0
#16 0x05cd0d22 in ?? () from /usr/lib/libORBit-2.so.0
#17 0x05cd0ed9 in ?? () from /usr/lib/libORBit-2.so.0
#18 0x05cd2f92 in ORBit_handle_request () from /usr/lib/libORBit-2.so.0
#19 0x05cbb155 in giop_connection_handle_input () from /usr/lib/libORBit-2.so.0
#20 0x05cda743 in ?? () from /usr/lib/libORBit-2.so.0
#21 0x05cdd016 in ?? () from /usr/lib/libORBit-2.so.0
#22 0x08561e78 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#23 0x08565720 in ?? () from /lib/libglib-2.0.so.0
#24 0x08565b8f in g_main_loop_run () from /lib/libglib-2.0.so.0
#25 0x04c78419 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#26 0x08049e6d in main ()
~~~~~~~~~~~~~

Any suggestions regarding what I&apos;m doing wrong/missing? Thanks!

(Flagging for review in the hopes that the use of g_object_unref is fitting and appropriate.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160394</commentid>
    <comment_count>4</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-11-04 02:26:03 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=42450) [details]
&gt; use g_object_unref to free children (?)
&gt; But I would like to understand this.... I tried:
&gt; 
&gt;     [...]
&gt;     GOwnPtr&lt;AtkObject&gt; child(atk_object_ref_accessible_child(atkParent, i));
&gt;     if (child == object)
&gt;         return i;
&gt; 
&gt; This is working, we get a match, and we attempt to return i. At which point,
&gt; GtkLauncher aborts. :-(

&gt; Any suggestions regarding what I&apos;m doing wrong/missing? Thanks!

The default implementation of freeOwnedGPtr (see JavaScriptCore/wtf/GOwnPtr.h) uses g_free instead of g_object_unref. So to have an AtkObject use GOwnPtr, you would need to &quot;override&quot; freeOwnedGPtr that will accept an AtkObject as a parameter and that calls g_object_unref to free to object.

&gt; 
&gt; (Flagging for review in the hopes that the use of g_object_unref is fitting and
&gt; appropriate.)

It&apos;s probably OK for this patch. But I think it&apos;s ideal if we could use GOwnPtr for AtkObjects as well in the future. 

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160398</commentid>
    <comment_count>5</comment_count>
      <attachid>42450</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 02:36:07 -0800</bug_when>
    <thetext>Comment on attachment 42450
use g_object_unref to free children (?)

Clearing flags on attachment: 42450

Committed r50509: &lt;http://trac.webkit.org/changeset/50509&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160399</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-11-04 02:36:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42361</attachid>
            <date>2009-11-02 22:16:19 -0800</date>
            <delta_ts>2009-11-03 21:37:21 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>31044-1.patch</filename>
            <type>text/plain</type>
            <size>3690</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAwZmIzYmY4ZGM5YmQ1MzY5Y2VlYWMwNDI3NTg1ZDU2MTM5OWM4Yzk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFR1ZSwgMyBOb3YgMjAwOSAwMToxMDo1MiAtMDUwMApTdWJqZWN0OiBbUEFU
Q0ggMi8yXSBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCmh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMTA0NApbR3RrXSBhc3NlcnRpb24gd2hlbiB3ZWJraXRfYWNj
ZXNzaWJsZV9nZXRfaW5kZXhfaW5fcGFyZW50IGF0dGVtcHRzIHRvIGdldCBwYXJlbnQgb2YgdGhl
IHdlYiB2aWV3CgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
QXRrLmNwcDoKKGF0a1BhcmVudE9mV2ViVmlldyk6Cih3ZWJraXRfYWNjZXNzaWJsZV9nZXRfaW5k
ZXhfaW5fcGFyZW50KToKKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQpOgotLS0KIFdlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysr
KysrKysKIC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAg
IHwgICAyNyArKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlv
bnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ODg5MmE3Li4xM2RhYzVmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw0ICsxLDE2IEBACiAy
MDA5LTExLTAzICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTA0NAorICAgICAgICBbR3RrXSBhc3Nl
cnRpb24gd2hlbiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfaW5kZXhfaW5fcGFyZW50IGF0dGVtcHRz
IHRvIGdldCBwYXJlbnQgb2YgdGhlIHdlYiB2aWV3CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgIChhdGtQYXJl
bnRPZldlYlZpZXcpOgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X2luZGV4X2luX3Bh
cmVudCk6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KToKKworMjAwOS0x
MS0wMyAgSm9hbm1hcmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgYi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApp
bmRleCAwNzk4MjYwLi40ZGRjODZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Z3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcAorKysgYi9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMjAwLDcg
KzIwMCw3IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNj
ZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRrCiAKIHN0YXRpYyBncG9pbnRlciB3ZWJr
aXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xhc3MgPSBOVUxMOwogCi1zdGF0aWMgQXRrT2JqZWN0KiB3
ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KEF0a09iamVjdCogb2JqZWN0KQorc3RhdGljIEF0
a09iamVjdCogYXRrUGFyZW50T2ZXZWJWaWV3KEF0a09iamVjdCogb2JqZWN0KQogewogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVQYXJlbnQgPSBjb3JlKG9iamVjdCktPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOwogCkBAIC0yMjUsNiArMjI1LDE4IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdl
YmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJu
IGNvcmVQYXJlbnQtPndyYXBwZXIoKTsKIH0KIAorc3RhdGljIEF0a09iamVjdCogd2Via2l0X2Fj
Y2Vzc2libGVfZ2V0X3BhcmVudChBdGtPYmplY3QqIG9iamVjdCkKK3sKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlUGFyZW50ID0gY29yZShvYmplY3QpLT5wYXJlbnRPYmplY3RVbmlnbm9y
ZWQoKTsKKyAgICBpZiAoIWNvcmVQYXJlbnQgJiYgY29yZShvYmplY3QpLT5pc1dlYkFyZWEoKSkK
KyAgICAgICAgcmV0dXJuIGF0a1BhcmVudE9mV2ViVmlldyhvYmplY3QpOworCisgICAgaWYgKCFj
b3JlUGFyZW50KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBjb3JlUGFyZW50
LT53cmFwcGVyKCk7Cit9CisKIHN0YXRpYyBnaW50IHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9uX2No
aWxkcmVuKEF0a09iamVjdCogb2JqZWN0KQogewogICAgIHJldHVybiBjb3JlKG9iamVjdCktPmNo
aWxkcmVuKCkuc2l6ZSgpOwpAQCAtMjU0LDcgKzI2NiwxNiBAQCBzdGF0aWMgZ2ludCB3ZWJraXRf
YWNjZXNzaWJsZV9nZXRfaW5kZXhfaW5fcGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7CiAKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChwYXJlbnQsIDApOworICAgIGlmICghcGFy
ZW50ICYmIGNvcmUob2JqZWN0KS0+aXNXZWJBcmVhKCkpIHsKKyAgICAgICAgQXRrT2JqZWN0KiBh
dGtQYXJlbnQgPSBhdGtQYXJlbnRPZldlYlZpZXcob2JqZWN0KTsKKyAgICAgICAgaWYgKCFhdGtQ
YXJlbnQpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgdW5zaWduZWQgY291bnQg
PSBhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oYXRrUGFyZW50KTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBpZiAo
YXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChhdGtQYXJlbnQsIGkpID09IG9iamVjdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CiAKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2hpbGRyZW4gPSBwYXJlbnQtPmNoaWxk
cmVuKCk7CiAgICAgdW5zaWduZWQgY291bnQgPSBjaGlsZHJlbi5zaXplKCk7CkBAIC0yNjMsNyAr
Mjg0LDcgQEAgc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVfZ2V0X2luZGV4X2luX3BhcmVu
dChBdGtPYmplY3QqIG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBpOwogICAgIH0KIAotICAg
IHJldHVybiAwOworICAgIHJldHVybiAtMTsKIH0KIAogc3RhdGljIEF0a0F0dHJpYnV0ZVNldCog
YWRkQXR0cmlidXRlVG9TZXQoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQsIGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IGNoYXIqIHZhbHVlKQotLSAKMS42LjMuMwoK
</data>
<flag name="review"
          id="23877"
          type_id="1"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42450</attachid>
            <date>2009-11-03 21:37:21 -0800</date>
            <delta_ts>2009-11-04 02:36:07 -0800</delta_ts>
            <desc>use g_object_unref to free children (?)</desc>
            <filename>31044-2.patch</filename>
            <type>text/plain</type>
            <size>3758</size>
            <attacher name="Joanmarie Diggs">jdiggs</attacher>
            
              <data encoding="base64">RnJvbSAxNmU1OTlhODFiMDJkYjUyZTU4NTZlYzE0ODM3NGZhNjc2NzIzYjkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2FubWFyaWUgRGlnZ3MgPGpvYW5tYXJpZS5kaWdnc0BnbWFp
bC5jb20+CkRhdGU6IFdlZCwgNCBOb3YgMjAwOSAwMDoyMDo1NiAtMDUwMApTdWJqZWN0OiBbUEFU
Q0hdIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMxMDQ0CltHdGtdIGFzc2VydGlvbiB3aGVuIHdlYmtpdF9hY2Nlc3Np
YmxlX2dldF9pbmRleF9pbl9wYXJlbnQgYXR0ZW1wdHMgdG8gZ2V0IHBhcmVudCBvZiB0aGUgd2Vi
IHZpZXcKCiogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwOgooYXRrUGFyZW50T2ZXZWJWaWV3KToKKHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9pbmRleF9p
bl9wYXJlbnQpOgood2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVudCk6Ci0tLQogV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrKysrKysK
IC4uLi9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwICAgICAgICAgIHwgICAz
MyArKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyks
IDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAyMjM3NzRkLi5mYWVjNjk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTEx
LTA0ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTA0NAorICAgICAgICBbR3RrXSBhc3NlcnRpb24g
d2hlbiB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfaW5kZXhfaW5fcGFyZW50IGF0dGVtcHRzIHRvIGdl
dCBwYXJlbnQgb2YgdGhlIHdlYiB2aWV3CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9B
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgIChhdGtQYXJlbnRPZldl
YlZpZXcpOgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X2luZGV4X2luX3BhcmVudCk6
CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV9nZXRfcGFyZW50KToKKwogMjAwOS0xMS0wMyAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
dmUgSHlhdHQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3BwCmluZGV4IDgwYjVhM2QuLjdjMGVlOGUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwCisrKyBiL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJBdGsuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgc2V0
QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0LCBBdGsKIAogc3RhdGljIGdwb2ludGVyIHdlYmtpdF9hY2Nlc3NpYmxlX3BhcmVudF9jbGFz
cyA9IE5VTEw7CiAKLXN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxlX2dldF9wYXJl
bnQoQXRrT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgQXRrT2JqZWN0KiBhdGtQYXJlbnRPZldlYlZp
ZXcoQXRrT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVBh
cmVudCA9IGNvcmUob2JqZWN0KS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAKQEAgLTIyMSw3
ICsyMjEsMTkgQEAgc3RhdGljIEF0a09iamVjdCogd2Via2l0X2FjY2Vzc2libGVfZ2V0X3BhcmVu
dChBdGtPYmplY3QqIG9iamVjdCkKICAgICB9CiAKICAgICBpZiAoIWNvcmVQYXJlbnQpCi0gICAg
ICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBjb3JlUGFy
ZW50LT53cmFwcGVyKCk7Cit9CisKK3N0YXRpYyBBdGtPYmplY3QqIHdlYmtpdF9hY2Nlc3NpYmxl
X2dldF9wYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCit7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZVBhcmVudCA9IGNvcmUob2JqZWN0KS0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Cisg
ICAgaWYgKCFjb3JlUGFyZW50ICYmIGNvcmUob2JqZWN0KS0+aXNXZWJBcmVhKCkpCisgICAgICAg
IHJldHVybiBhdGtQYXJlbnRPZldlYlZpZXcob2JqZWN0KTsKKworICAgIGlmICghY29yZVBhcmVu
dCkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gY29yZVBhcmVudC0+d3JhcHBlcigp
OwogfQpAQCAtMjU1LDcgKzI2NywyMCBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV9n
ZXRfaW5kZXhfaW5fcGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9iamVjdCk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7CiAKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChwYXJlbnQsIDApOworICAgIGlmICghcGFyZW50ICYmIGNvcmUo
b2JqZWN0KS0+aXNXZWJBcmVhKCkpIHsKKyAgICAgICAgQXRrT2JqZWN0KiBhdGtQYXJlbnQgPSBh
dGtQYXJlbnRPZldlYlZpZXcob2JqZWN0KTsKKyAgICAgICAgaWYgKCFhdGtQYXJlbnQpCisgICAg
ICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgdW5zaWduZWQgY291bnQgPSBhdGtfb2JqZWN0
X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oYXRrUGFyZW50KTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIEF0a09iamVjdCogY2hp
bGQgPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKGF0a1BhcmVudCwgaSk7CisgICAg
ICAgICAgICBib29sIGNoaWxkSXNPYmplY3QgPSBjaGlsZCA9PSBvYmplY3Q7CisgICAgICAgICAg
ICBnX29iamVjdF91bnJlZihjaGlsZCk7CisgICAgICAgICAgICBpZiAoY2hpbGRJc09iamVjdCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IHBh
cmVudC0+Y2hpbGRyZW4oKTsKICAgICB1bnNpZ25lZCBjb3VudCA9IGNoaWxkcmVuLnNpemUoKTsK
QEAgLTI2NCw3ICsyODksNyBAQCBzdGF0aWMgZ2ludCB3ZWJraXRfYWNjZXNzaWJsZV9nZXRfaW5k
ZXhfaW5fcGFyZW50KEF0a09iamVjdCogb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIC0xOwogfQogCiBzdGF0aWMgQXRrQXR0
cmlidXRlU2V0KiBhZGRBdHRyaWJ1dGVUb1NldChBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNl
dCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUpCi0tIAoxLjYuMy4zCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>