<?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>63445</bug_id>
          
          <creation_ts>2011-06-27 05:14:07 -0700</creation_ts>
          <short_desc>[GTK] Add back/forward menu to MiniBrowser toolbar</short_desc>
          <delta_ts>2011-06-30 06:03:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>427858</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-27 05:14:07 -0700</bug_when>
    <thetext>We can use GtkMenuToolButton for the navigation toolbar widgets and attach a menu with the history items.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427862</commentid>
    <comment_count>1</comment_count>
      <attachid>98705</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-27 05:19:01 -0700</bug_when>
    <thetext>Created attachment 98705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427992</commentid>
    <comment_count>2</comment_count>
      <attachid>98705</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-27 09:11:24 -0700</bug_when>
    <thetext>Comment on attachment 98705
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=98705&amp;action=review

Looks good, just have a few suggestions.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:294
&gt; +    WKURLRef url = WKBackForwardListItemCopyURL(item);
&gt; +    gchar *name = WKURLGetCString(url);
&gt; +    WKRelease(url);
&gt; +
&gt; +    WKStringRef title = WKBackForwardListItemCopyTitle(item);
&gt; +    gchar *label = WKStringGetCString(title);
&gt; +    WKRelease(title);
&gt; +
&gt; +    return gtk_action_new(name, label, 0, 0);

This seems wrong. Either name and label are leaking or you are using them after they are freed.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:325
&gt; +        WKBackForwardListItemRef item = WKArrayGetItemAtIndex(list, i);
&gt; +        GtkAction *action = createGtkActionFromBackForwardItem(item);
&gt; +        if (!action)
&gt; +            continue;
&gt; +
&gt; +        g_object_set_data_full(G_OBJECT(action), &quot;back-forward-list-item&quot;, (gpointer)WKRetain(item), (GDestroyNotify)WKRelease);
&gt; +        g_signal_connect_swapped(action, &quot;activate&quot;, G_CALLBACK(browserWindowHistoryItemActivated), window);
&gt; +
&gt; +        GtkWidget *menuItem = gtk_action_create_menu_item(action);
&gt; +        g_signal_connect_swapped(menuItem, &quot;select&quot;, G_CALLBACK(browserWindowHistoryItemSelected), window);
&gt; +        g_object_unref(action);
&gt; +
&gt; +        gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuItem);
&gt; +        gtk_widget_show(menuItem);
&gt; +        hasItems = TRUE;

Please split this out into a helper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427995</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-27 09:17:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 98705 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98705&amp;action=review
&gt; 
&gt; Looks good, just have a few suggestions.

Thanks for reviewing!

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:294
&gt; &gt; +    WKURLRef url = WKBackForwardListItemCopyURL(item);
&gt; &gt; +    gchar *name = WKURLGetCString(url);
&gt; &gt; +    WKRelease(url);
&gt; &gt; +
&gt; &gt; +    WKStringRef title = WKBackForwardListItemCopyTitle(item);
&gt; &gt; +    gchar *label = WKStringGetCString(title);
&gt; &gt; +    WKRelease(title);
&gt; &gt; +
&gt; &gt; +    return gtk_action_new(name, label, 0, 0);
&gt; 
&gt; This seems wrong. Either name and label are leaking or you are using them after they are freed.

They are indeed leaking :-P

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:325
&gt; &gt; +        WKBackForwardListItemRef item = WKArrayGetItemAtIndex(list, i);
&gt; &gt; +        GtkAction *action = createGtkActionFromBackForwardItem(item);
&gt; &gt; +        if (!action)
&gt; &gt; +            continue;
&gt; &gt; +
&gt; &gt; +        g_object_set_data_full(G_OBJECT(action), &quot;back-forward-list-item&quot;, (gpointer)WKRetain(item), (GDestroyNotify)WKRelease);
&gt; &gt; +        g_signal_connect_swapped(action, &quot;activate&quot;, G_CALLBACK(browserWindowHistoryItemActivated), window);
&gt; &gt; +
&gt; &gt; +        GtkWidget *menuItem = gtk_action_create_menu_item(action);
&gt; &gt; +        g_signal_connect_swapped(menuItem, &quot;select&quot;, G_CALLBACK(browserWindowHistoryItemSelected), window);
&gt; &gt; +        g_object_unref(action);
&gt; &gt; +
&gt; &gt; +        gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuItem);
&gt; &gt; +        gtk_widget_show(menuItem);
&gt; &gt; +        hasItems = TRUE;
&gt; 
&gt; Please split this out into a helper.

Ok. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428011</commentid>
    <comment_count>4</comment_count>
      <attachid>98739</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-27 09:43:38 -0700</bug_when>
    <thetext>Created attachment 98739
Updated patch according to review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>428930</commentid>
    <comment_count>5</comment_count>
      <attachid>98739</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-06-28 09:35:15 -0700</bug_when>
    <thetext>Comment on attachment 98739
Updated patch according to review

View in context: https://bugs.webkit.org/attachment.cgi?id=98739&amp;action=review

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:298
&gt; +    gchar *name = WKURLGetCString(url);
&gt; +    WKRelease(url);
&gt; +
&gt; +    WKStringRef title = WKBackForwardListItemCopyTitle(item);
&gt; +    gchar *label = WKStringGetCString(title);
&gt; +    WKRelease(title);
&gt; +
&gt; +    GtkAction *action = gtk_action_new(name, label, 0, 0);
&gt; +    g_free(name);
&gt; +    g_free(label);
&gt; +
&gt; +    return action;

I think it&apos;s more appropriate to use char and bare free here since these types aren&apos;t allocated by GLib.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:330
&gt; +    guint i;
&gt; +
&gt; +    if (!list)
&gt; +        return 0;
&gt; +
&gt; +    guint listCount = WKArrayGetSize(list);
&gt; +    if (!listCount)
&gt; +        return 0;
&gt; +
&gt; +    GtkWidget *menu = gtk_menu_new();
&gt; +    gboolean hasItems = FALSE;
&gt; +    for (i = 0; i &lt; listCount; i++) {

Please declare i just above the for for loop instead of at the top.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430341</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-30 06:01:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 98739 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98739&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:298
&gt; &gt; +    gchar *name = WKURLGetCString(url);
&gt; &gt; +    WKRelease(url);
&gt; &gt; +
&gt; &gt; +    WKStringRef title = WKBackForwardListItemCopyTitle(item);
&gt; &gt; +    gchar *label = WKStringGetCString(title);
&gt; &gt; +    WKRelease(title);
&gt; &gt; +
&gt; &gt; +    GtkAction *action = gtk_action_new(name, label, 0, 0);
&gt; &gt; +    g_free(name);
&gt; &gt; +    g_free(label);
&gt; &gt; +
&gt; &gt; +    return action;
&gt; 
&gt; I think it&apos;s more appropriate to use char and bare free here since these types aren&apos;t allocated by GLib.

Yes, they are, see WKStringGetCString() it uses g_malloc()

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:330
&gt; &gt; +    guint i;
&gt; &gt; +
&gt; &gt; +    if (!list)
&gt; &gt; +        return 0;
&gt; &gt; +
&gt; &gt; +    guint listCount = WKArrayGetSize(list);
&gt; &gt; +    if (!listCount)
&gt; &gt; +        return 0;
&gt; &gt; +
&gt; &gt; +    GtkWidget *menu = gtk_menu_new();
&gt; &gt; +    gboolean hasItems = FALSE;
&gt; &gt; +    for (i = 0; i &lt; listCount; i++) {
&gt; 
&gt; Please declare i just above the for for loop instead of at the top.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>430344</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-30 06:03:03 -0700</bug_when>
    <thetext>Committed r90109: &lt;http://trac.webkit.org/changeset/90109&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98705</attachid>
            <date>2011-06-27 05:19:01 -0700</date>
            <delta_ts>2011-06-27 09:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-minibrowser-history.diff</filename>
            <type>text/plain</type>
            <size>7616</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODEx
YzNmLi42NmFkNDZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDYtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIEFkZCBiYWNrL2ZvcndhcmQgbWVudSB0byBNaW5pQnJvd3Nl
ciB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MzQ0NQorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAg
ICAgICAgKGJyb3dzZXJfd2luZG93X2luaXQpOiBVc2UgYSBHdGtNZW51VG9vbEJ1dHRvbiBmb3Ig
bmF2aWdhdGlvbgorICAgICAgICB3aWRnZXRzLgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0
cnVjdGVkKTogR2V0IHRoZSBwYWdlIEJhY2tGb3J3YXJkTGlzdC4KKyAgICAgICAgKGJyb3dzZXJX
aW5kb3dIaXN0b3J5SXRlbUFjdGl2YXRlZCk6IEdvIHRvIGFjdGl2YXRlZCBoaXN0b3J5IGl0ZW0u
CisgICAgICAgIChicm93c2VyV2luZG93SGlzdG9yeUl0ZW1TZWxlY3RlZCk6IFNob3cgdGhlIHVy
bCBvZiBjdXJyZW50bHkgc2VsZWN0ZWQKKyAgICAgICAgaGlzdG9yeSBpdGVtIGluIHRoZSBzdGF0
dXNiYXIuCisgICAgICAgIChjcmVhdGVHdGtBY3Rpb25Gcm9tQmFja0ZvcndhcmRJdGVtKTogQ3Jl
YXRlIGEgR3RrQWN0aW9uIGZyb20gYQorICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYu
CisgICAgICAgIChicm93c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KTogQ3JlYXRlIGEg
R3RrTWVudSB3aXRoIHRoZQorICAgICAgICBnaXZlbiBoaXN0b3J5IGl0ZW1zLgorICAgICAgICAo
YnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRpb25BY3Rpb25zKTogVXBkYXRlIG5hdmlnYXRpb24g
YWN0aW9ucworICAgICAgICBzZW5zaXRpdml0eSBhbmQgaGlzdG9yeSBtZW51cy4KKyAgICAgICAg
KGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCk6IENhbGwKKyAgICAgICAgYnJvd3NlcldpbmRvd1Vw
ZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCkuCisgICAgICAgIChicm93c2VyV2luZG93TG9hZGVyQ2xp
ZW50SW5pdCk6IEFkZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QKKyAgICAgICAgY2FsbGJhY2su
CisKIDIwMTEtMDYtMjUgIE5hb2tpIFRha2FubyAgPGhvbnRlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJX
aW5kb3cuYwppbmRleCA0M2M0NDlmLi4zNDM4MDgxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKQEAgLTM5LDkgKzM5LDEyIEBAIHN0cnVjdCBfQnJvd3NlcldpbmRvdyB7CiAg
ICAgR3RrV2lkZ2V0ICptYWluQm94OwogICAgIEd0a1dpZGdldCAqdXJpRW50cnk7CiAgICAgR3Rr
V2lkZ2V0ICpzdGF0dXNCYXI7CisgICAgR3RrV2lkZ2V0ICpiYWNrSXRlbTsKKyAgICBHdGtXaWRn
ZXQgKmZvcndhcmRJdGVtOwogICAgIFdLVmlld1JlZiB3ZWJWaWV3OwogCiAgICAgZ3VpbnQgc3Rh
dHVzQmFyQ29udGV4dElkOworICAgIFdLQmFja0ZvcndhcmRMaXN0UmVmIGhpc3Rvcnk7CiAKICAg
ICBnY2hhciAqdGl0bGU7CiAgICAgZ2RvdWJsZSBsb2FkUHJvZ3Jlc3M7CkBAIC0xMjksMTIgKzEz
MiwxNiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cqIHdp
bmRvdykKICNlbmRpZgogICAgIGd0a190b29sYmFyX3NldF9zdHlsZShHVEtfVE9PTEJBUih0b29s
YmFyKSwgR1RLX1RPT0xCQVJfQk9USF9IT1JJWik7CiAKLSAgICBHdGtUb29sSXRlbSAqaXRlbSA9
IGd0a190b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfR09fQkFDSyk7CisgICAg
R3RrVG9vbEl0ZW0gKml0ZW0gPSBndGtfbWVudV90b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhH
VEtfU1RPQ0tfR09fQkFDSyk7CisgICAgd2luZG93LT5iYWNrSXRlbSA9IEdUS19XSURHRVQoaXRl
bSk7CisgICAgZ3RrX21lbnVfdG9vbF9idXR0b25fc2V0X21lbnUoR1RLX01FTlVfVE9PTF9CVVRU
T04oaXRlbSksIDApOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChpdGVtLCAiY2xpY2tl
ZCIsIEdfQ0FMTEJBQ0soZ29CYWNrQ2FsbGJhY2spLCAoZ3BvaW50ZXIpd2luZG93KTsKICAgICBn
dGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0xKTsKICAgICBn
dGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAKLSAgICBpdGVtID0gZ3RrX3Rvb2xf
YnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19GT1JXQVJEKTsKKyAgICBpdGVtID0g
Z3RrX21lbnVfdG9vbF9idXR0b25fbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0dPX0ZPUldBUkQp
OworICAgIHdpbmRvdy0+Zm9yd2FyZEl0ZW0gPSBHVEtfV0lER0VUKGl0ZW0pOworICAgIGd0a19t
ZW51X3Rvb2xfYnV0dG9uX3NldF9tZW51KEdUS19NRU5VX1RPT0xfQlVUVE9OKGl0ZW0pLCAwKTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoR19PQkpFQ1QoaXRlbSksICJjbGlja2VkIiwg
R19DQUxMQkFDSyhnb0ZvcndhcmRDYWxsYmFjayksIChncG9pbnRlcil3aW5kb3cpOwogICAgIGd0
a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwogICAgIGd0
a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKQEAgLTE3Miw2ICsxNzksOCBAQCBzdGF0
aWMgdm9pZCBicm93c2VyV2luZG93Q29uc3RydWN0ZWQoR09iamVjdCogZ09iamVjdCkKICAgICBn
dGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gpLCB3aW5kb3ctPnN0YXR1
c0JhciwgRkFMU0UsIEZBTFNFLCAwKTsKICAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT5zdGF0
dXNCYXIpOwogCisgICAgd2luZG93LT5oaXN0b3J5ID0gV0tQYWdlR2V0QmFja0ZvcndhcmRMaXN0
KFdLVmlld0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSk7CisKICAgICBicm93c2VyV2luZG93TG9h
ZGVyQ2xpZW50SW5pdCh3aW5kb3cpOwogICAgIGJyb3dzZXJXaW5kb3dVSUNsaWVudEluaXQod2lu
ZG93KTsKIH0KQEAgLTI0OSw2ICsyNTgsOTkgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1Vw
ZGF0ZVVSTChCcm93c2VyV2luZG93KiB3aW5kb3csIFdLVVJMUmVmIHVybCkKICAgICBnX2ZyZWUo
dXJsVGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dIaXN0b3J5SXRlbUFjdGl2
YXRlZChCcm93c2VyV2luZG93ICp3aW5kb3csIEd0a0FjdGlvbiAqYWN0aW9uKQoreworICAgIFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qo
YWN0aW9uKSwgImJhY2stZm9yd2FyZC1saXN0LWl0ZW0iKTsKKyAgICBpZiAoIWl0ZW0pCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdLVmlld0dl
dFBhZ2Uod2luZG93LT53ZWJWaWV3KSwgaXRlbSk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJX
aW5kb3dIaXN0b3J5SXRlbVNlbGVjdGVkKEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR3RrTWVudUl0
ZW0gKml0ZW0pCit7CisgICAgZ3RrX3N0YXR1c2Jhcl9wb3AoR1RLX1NUQVRVU0JBUih3aW5kb3ct
PnN0YXR1c0JhciksIHdpbmRvdy0+c3RhdHVzQmFyQ29udGV4dElkKTsKKworICAgIEd0a0FjdGlv
biAqYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2FjdGlvbihHVEtfQUNUSVZB
VEFCTEUoaXRlbSkpOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBn
dGtfc3RhdHVzYmFyX3B1c2goR1RLX1NUQVRVU0JBUih3aW5kb3ctPnN0YXR1c0JhciksIHdpbmRv
dy0+c3RhdHVzQmFyQ29udGV4dElkLCBndGtfYWN0aW9uX2dldF9uYW1lKGFjdGlvbikpOworfQor
CitzdGF0aWMgR3RrQWN0aW9uICpjcmVhdGVHdGtBY3Rpb25Gcm9tQmFja0ZvcndhcmRJdGVtKFdL
QmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKQoreworICAgIGlmICghaXRlbSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBXS1VSTFJlZiB1cmwgPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Db3B5
VVJMKGl0ZW0pOworICAgIGdjaGFyICpuYW1lID0gV0tVUkxHZXRDU3RyaW5nKHVybCk7CisgICAg
V0tSZWxlYXNlKHVybCk7CisKKyAgICBXS1N0cmluZ1JlZiB0aXRsZSA9IFdLQmFja0ZvcndhcmRM
aXN0SXRlbUNvcHlUaXRsZShpdGVtKTsKKyAgICBnY2hhciAqbGFiZWwgPSBXS1N0cmluZ0dldENT
dHJpbmcodGl0bGUpOworICAgIFdLUmVsZWFzZSh0aXRsZSk7CisKKyAgICByZXR1cm4gZ3RrX2Fj
dGlvbl9uZXcobmFtZSwgbGFiZWwsIDAsIDApOworfQorCitzdGF0aWMgR3RrV2lkZ2V0ICpicm93
c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV0tB
cnJheVJlZiBsaXN0KQoreworICAgIGd1aW50IGk7CisKKyAgICBpZiAoIWxpc3QpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZ3VpbnQgbGlzdENvdW50ID0gV0tBcnJheUdldFNpemUobGlzdCk7
CisgICAgaWYgKCFsaXN0Q291bnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgR3RrV2lkZ2V0
ICptZW51ID0gZ3RrX21lbnVfbmV3KCk7CisgICAgZ2Jvb2xlYW4gaGFzSXRlbXMgPSBGQUxTRTsK
KyAgICBmb3IgKGkgPSAwOyBpIDwgbGlzdENvdW50OyBpKyspIHsKKyAgICAgICAgV0tCYWNrRm9y
d2FyZExpc3RJdGVtUmVmIGl0ZW0gPSBXS0FycmF5R2V0SXRlbUF0SW5kZXgobGlzdCwgaSk7Cisg
ICAgICAgIEd0a0FjdGlvbiAqYWN0aW9uID0gY3JlYXRlR3RrQWN0aW9uRnJvbUJhY2tGb3J3YXJk
SXRlbShpdGVtKTsKKyAgICAgICAgaWYgKCFhY3Rpb24pCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JKRUNUKGFjdGlvbiksICJiYWNr
LWZvcndhcmQtbGlzdC1pdGVtIiwgKGdwb2ludGVyKVdLUmV0YWluKGl0ZW0pLCAoR0Rlc3Ryb3lO
b3RpZnkpV0tSZWxlYXNlKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGFjdGlv
biwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhicm93c2VyV2luZG93SGlzdG9yeUl0ZW1BY3RpdmF0
ZWQpLCB3aW5kb3cpOworCisgICAgICAgIEd0a1dpZGdldCAqbWVudUl0ZW0gPSBndGtfYWN0aW9u
X2NyZWF0ZV9tZW51X2l0ZW0oYWN0aW9uKTsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKG1lbnVJdGVtLCAic2VsZWN0IiwgR19DQUxMQkFDSyhicm93c2VyV2luZG93SGlzdG9yeUl0
ZW1TZWxlY3RlZCksIHdpbmRvdyk7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKGFjdGlvbik7CisK
KyAgICAgICAgZ3RrX21lbnVfc2hlbGxfcHJlcGVuZChHVEtfTUVOVV9TSEVMTChtZW51KSwgbWVu
dUl0ZW0pOworICAgICAgICBndGtfd2lkZ2V0X3Nob3cobWVudUl0ZW0pOworICAgICAgICBoYXNJ
dGVtcyA9IFRSVUU7CisgICAgfQorCisgICAgaWYgKCFoYXNJdGVtcykgeworICAgICAgICBndGtf
d2lkZ2V0X2Rlc3Ryb3kobWVudSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJl
dHVybiBtZW51OworfQorCitzdGF0aWMgdm9pZCBicm93c2VyV2luZG93VXBkYXRlTmF2aWdhdGlv
bkFjdGlvbnMoQnJvd3NlcldpbmRvdyogd2luZG93KQoreworICAgIGd0a193aWRnZXRfc2V0X3Nl
bnNpdGl2ZSh3aW5kb3ctPmJhY2tJdGVtLCBXS1BhZ2VDYW5Hb0JhY2soV0tWaWV3R2V0UGFnZSh3
aW5kb3ctPndlYlZpZXcpKSk7CisgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKHdpbmRvdy0+
Zm9yd2FyZEl0ZW0sIFdLUGFnZUNhbkdvRm9yd2FyZChXS1ZpZXdHZXRQYWdlKHdpbmRvdy0+d2Vi
VmlldykpKTsKKworICAgIFdLQXJyYXlSZWYgbGlzdCA9IFdLQmFja0ZvcndhcmRMaXN0Q29weUJh
Y2tMaXN0V2l0aExpbWl0KHdpbmRvdy0+aGlzdG9yeSwgMTApOworICAgIEd0a1dpZGdldCAqbWVu
dSA9IGJyb3dzZXJXaW5kb3dDcmVhdGVCYWNrRm9yd2FyZE1lbnUod2luZG93LCBsaXN0KTsKKyAg
ICBndGtfbWVudV90b29sX2J1dHRvbl9zZXRfbWVudShHVEtfTUVOVV9UT09MX0JVVFRPTih3aW5k
b3ctPmJhY2tJdGVtKSwgbWVudSk7CisgICAgaWYgKGxpc3QpCisgICAgICAgIFdLUmVsZWFzZShs
aXN0KTsKKworICAgIGxpc3QgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlGb3J3YXJkTGlzdFdpdGhM
aW1pdCh3aW5kb3ctPmhpc3RvcnksIDEwKTsKKyAgICBtZW51ID0gYnJvd3NlcldpbmRvd0NyZWF0
ZUJhY2tGb3J3YXJkTWVudSh3aW5kb3csIGxpc3QpOworICAgIGd0a19tZW51X3Rvb2xfYnV0dG9u
X3NldF9tZW51KEdUS19NRU5VX1RPT0xfQlVUVE9OKHdpbmRvdy0+Zm9yd2FyZEl0ZW0pLCBtZW51
KTsKKyAgICBpZiAobGlzdCkKKyAgICAgICAgV0tSZWxlYXNlKGxpc3QpOworfQorCiAvLyBMb2Fk
ZXIgY2xpZW50Lgogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewpAQCAtMzY2LDYgKzQ2OCwxMSBAQCBzdGF0aWMgdm9pZCBk
aWRCZWNvbWVSZXNwb25zaXZlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogfQogCitzdGF0aWMgdm9pZCBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV0tQYWdlUmVm
IHBhZ2UsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVt
b3ZlZEl0ZW1zLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIGJyb3dzZXJXaW5kb3dV
cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucyhCUk9XU0VSX1dJTkRPVyhjbGllbnRJbmZvKSk7Cit9CisK
IHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dMb2FkZXJDbGllbnRJbml0KEJyb3dzZXJXaW5kb3cq
IHdpbmRvdykKIHsKICAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZENsaWVudCA9IHsKQEAgLTM5
Myw3ICs1MDAsNyBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93TG9hZGVyQ2xpZW50SW5pdChC
cm93c2VyV2luZG93KiB3aW5kb3cpCiAgICAgICAgIGRpZEJlY29tZVVucmVzcG9uc2l2ZSwKICAg
ICAgICAgZGlkQmVjb21lUmVzcG9uc2l2ZSwKICAgICAgICAgMCwgICAgICAgLyogcHJvY2Vzc0Rp
ZENyYXNoICovCi0gICAgICAgIDAsICAgICAgIC8qIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCAq
LworICAgICAgICBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QsCiAgICAgICAgIDAsICAgICAgIC8q
IHNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtICovCiAgICAgICAgIDAgICAgICAgIC8qIGRp
ZEZhaWxUb0luaXRpYWxpemVQbHVnaW4gKi8KICAgICB9Owo=
</data>
<flag name="review"
          id="92986"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98739</attachid>
            <date>2011-06-27 09:43:38 -0700</date>
            <delta_ts>2011-06-28 09:35:14 -0700</delta_ts>
            <desc>Updated patch according to review</desc>
            <filename>wk2-minibrowser-history2.diff</filename>
            <type>text/plain</type>
            <size>8073</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3ODEx
YzNmLi45NWQ1ZDQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFtHVEtdIEFkZCBiYWNrL2ZvcndhcmQgbWVudSB0byBNaW5pQnJvd3Nl
ciB0b29sYmFyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MzQ0NQorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAg
ICAgICAgKGJyb3dzZXJfd2luZG93X2luaXQpOiBVc2UgYSBHdGtNZW51VG9vbEJ1dHRvbiBmb3Ig
bmF2aWdhdGlvbgorICAgICAgICB3aWRnZXRzLgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0
cnVjdGVkKTogR2V0IHRoZSBwYWdlIEJhY2tGb3J3YXJkTGlzdC4KKyAgICAgICAgKGJyb3dzZXJX
aW5kb3dIaXN0b3J5SXRlbUFjdGl2YXRlZCk6IEdvIHRvIGFjdGl2YXRlZCBoaXN0b3J5IGl0ZW0u
CisgICAgICAgIChicm93c2VyV2luZG93SGlzdG9yeUl0ZW1TZWxlY3RlZCk6IFNob3cgdGhlIHVy
bCBvZiBjdXJyZW50bHkKKyAgICAgICAgc2VsZWN0ZWQgaGlzdG9yeSBpdGVtIGluIHRoZSBzdGF0
dXNiYXIuCisgICAgICAgIChjcmVhdGVHdGtBY3Rpb25Gcm9tQmFja0ZvcndhcmRJdGVtKTogQ3Jl
YXRlIGEgR3RrQWN0aW9uIGZyb20gYQorICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYu
CisgICAgICAgIChicm93c2VyV2luZG93Q3JlYXRlTWVudUl0ZW1Gcm9tQmFja0ZvcndhcmRJdGVt
KTogQ3JlYXRlIGEKKyAgICAgICAgR3RrTWVudUl0ZW0gZnJvbSBhIFdLQmFja0ZvcndhcmRMaXN0
SXRlbVJlZi4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dDcmVhdGVCYWNrRm9yd2FyZE1lbnUpOiBD
cmVhdGUgYSBHdGtNZW51IHdpdGggdGhlCisgICAgICAgIGdpdmVuIGhpc3RvcnkgaXRlbXMuCisg
ICAgICAgIChicm93c2VyV2luZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMpOiBVcGRhdGUgbmF2
aWdhdGlvbiB3aWRnZXRzCisgICAgICAgIHNlbnNpdGl2aXR5IGFuZCBoaXN0b3J5IG1lbnVzLgor
ICAgICAgICAoZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KTogQ2FsbAorICAgICAgICBicm93c2Vy
V2luZG93VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKS4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dM
b2FkZXJDbGllbnRJbml0KTogQWRkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdAorICAgICAgICBj
YWxsYmFjay4KKwogMjAxMS0wNi0yNSAgTmFva2kgVGFrYW5vICA8aG9udGVuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jCmluZGV4IDQzYzQ0OWYuLjk5M2YzN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMzksOSArMzksMTIgQEAgc3RydWN0IF9Ccm93c2VyV2lu
ZG93IHsKICAgICBHdGtXaWRnZXQgKm1haW5Cb3g7CiAgICAgR3RrV2lkZ2V0ICp1cmlFbnRyeTsK
ICAgICBHdGtXaWRnZXQgKnN0YXR1c0JhcjsKKyAgICBHdGtXaWRnZXQgKmJhY2tJdGVtOworICAg
IEd0a1dpZGdldCAqZm9yd2FyZEl0ZW07CiAgICAgV0tWaWV3UmVmIHdlYlZpZXc7CiAKICAgICBn
dWludCBzdGF0dXNCYXJDb250ZXh0SWQ7CisgICAgV0tCYWNrRm9yd2FyZExpc3RSZWYgaGlzdG9y
eTsKIAogICAgIGdjaGFyICp0aXRsZTsKICAgICBnZG91YmxlIGxvYWRQcm9ncmVzczsKQEAgLTEy
OSwxMiArMTMyLDE2IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X2luaXQoQnJvd3Nlcldp
bmRvdyogd2luZG93KQogI2VuZGlmCiAgICAgZ3RrX3Rvb2xiYXJfc2V0X3N0eWxlKEdUS19UT09M
QkFSKHRvb2xiYXIpLCBHVEtfVE9PTEJBUl9CT1RIX0hPUklaKTsKIAotICAgIEd0a1Rvb2xJdGVt
ICppdGVtID0gZ3RrX3Rvb2xfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19CQUNL
KTsKKyAgICBHdGtUb29sSXRlbSAqaXRlbSA9IGd0a19tZW51X3Rvb2xfYnV0dG9uX25ld19mcm9t
X3N0b2NrKEdUS19TVE9DS19HT19CQUNLKTsKKyAgICB3aW5kb3ctPmJhY2tJdGVtID0gR1RLX1dJ
REdFVChpdGVtKTsKKyAgICBndGtfbWVudV90b29sX2J1dHRvbl9zZXRfbWVudShHVEtfTUVOVV9U
T09MX0JVVFRPTihpdGVtKSwgMCk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGl0ZW0s
ICJjbGlja2VkIiwgR19DQUxMQkFDSyhnb0JhY2tDYWxsYmFjayksIChncG9pbnRlcil3aW5kb3cp
OwogICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEp
OwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAotICAgIGl0ZW0gPSBn
dGtfdG9vbF9idXR0b25fbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0dPX0ZPUldBUkQpOworICAg
IGl0ZW0gPSBndGtfbWVudV90b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfR09f
Rk9SV0FSRCk7CisgICAgd2luZG93LT5mb3J3YXJkSXRlbSA9IEdUS19XSURHRVQoaXRlbSk7Cisg
ICAgZ3RrX21lbnVfdG9vbF9idXR0b25fc2V0X21lbnUoR1RLX01FTlVfVE9PTF9CVVRUT04oaXRl
bSksIDApOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChHX09CSkVDVChpdGVtKSwgImNs
aWNrZWQiLCBHX0NBTExCQUNLKGdvRm9yd2FyZENhbGxiYWNrKSwgKGdwb2ludGVyKXdpbmRvdyk7
CiAgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7
CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaXRlbSkpOwpAQCAtMTcyLDYgKzE3OSw4
IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0KiBnT2JqZWN0
KQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIHdpbmRv
dy0+c3RhdHVzQmFyLCBGQUxTRSwgRkFMU0UsIDApOwogICAgIGd0a193aWRnZXRfc2hvdyh3aW5k
b3ctPnN0YXR1c0Jhcik7CiAKKyAgICB3aW5kb3ctPmhpc3RvcnkgPSBXS1BhZ2VHZXRCYWNrRm9y
d2FyZExpc3QoV0tWaWV3R2V0UGFnZSh3aW5kb3ctPndlYlZpZXcpKTsKKwogICAgIGJyb3dzZXJX
aW5kb3dMb2FkZXJDbGllbnRJbml0KHdpbmRvdyk7CiAgICAgYnJvd3NlcldpbmRvd1VJQ2xpZW50
SW5pdCh3aW5kb3cpOwogfQpAQCAtMjQ5LDYgKzI1OCwxMTIgQEAgc3RhdGljIHZvaWQgYnJvd3Nl
cldpbmRvd1VwZGF0ZVVSTChCcm93c2VyV2luZG93KiB3aW5kb3csIFdLVVJMUmVmIHVybCkKICAg
ICBnX2ZyZWUodXJsVGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dIaXN0b3J5
SXRlbUFjdGl2YXRlZChCcm93c2VyV2luZG93ICp3aW5kb3csIEd0a0FjdGlvbiAqYWN0aW9uKQor
eworICAgIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtID0gZ19vYmplY3RfZ2V0X2RhdGEo
R19PQkpFQ1QoYWN0aW9uKSwgImJhY2stZm9yd2FyZC1saXN0LWl0ZW0iKTsKKyAgICBpZiAoIWl0
ZW0pCisgICAgICAgIHJldHVybjsKKworICAgIFdLUGFnZUdvVG9CYWNrRm9yd2FyZExpc3RJdGVt
KFdLVmlld0dldFBhZ2Uod2luZG93LT53ZWJWaWV3KSwgaXRlbSk7Cit9CisKK3N0YXRpYyB2b2lk
IGJyb3dzZXJXaW5kb3dIaXN0b3J5SXRlbVNlbGVjdGVkKEJyb3dzZXJXaW5kb3cgKndpbmRvdywg
R3RrTWVudUl0ZW0gKml0ZW0pCit7CisgICAgZ3RrX3N0YXR1c2Jhcl9wb3AoR1RLX1NUQVRVU0JB
Uih3aW5kb3ctPnN0YXR1c0JhciksIHdpbmRvdy0+c3RhdHVzQmFyQ29udGV4dElkKTsKKworICAg
IEd0a0FjdGlvbiAqYWN0aW9uID0gZ3RrX2FjdGl2YXRhYmxlX2dldF9yZWxhdGVkX2FjdGlvbihH
VEtfQUNUSVZBVEFCTEUoaXRlbSkpOworICAgIGlmICghYWN0aW9uKQorICAgICAgICByZXR1cm47
CisKKyAgICBndGtfc3RhdHVzYmFyX3B1c2goR1RLX1NUQVRVU0JBUih3aW5kb3ctPnN0YXR1c0Jh
ciksIHdpbmRvdy0+c3RhdHVzQmFyQ29udGV4dElkLCBndGtfYWN0aW9uX2dldF9uYW1lKGFjdGlv
bikpOworfQorCitzdGF0aWMgR3RrQWN0aW9uICpjcmVhdGVHdGtBY3Rpb25Gcm9tQmFja0Zvcndh
cmRJdGVtKFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBpdGVtKQoreworICAgIGlmICghaXRlbSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBXS1VSTFJlZiB1cmwgPSBXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1Db3B5VVJMKGl0ZW0pOworICAgIGdjaGFyICpuYW1lID0gV0tVUkxHZXRDU3RyaW5nKHVy
bCk7CisgICAgV0tSZWxlYXNlKHVybCk7CisKKyAgICBXS1N0cmluZ1JlZiB0aXRsZSA9IFdLQmFj
a0ZvcndhcmRMaXN0SXRlbUNvcHlUaXRsZShpdGVtKTsKKyAgICBnY2hhciAqbGFiZWwgPSBXS1N0
cmluZ0dldENTdHJpbmcodGl0bGUpOworICAgIFdLUmVsZWFzZSh0aXRsZSk7CisKKyAgICBHdGtB
Y3Rpb24gKmFjdGlvbiA9IGd0a19hY3Rpb25fbmV3KG5hbWUsIGxhYmVsLCAwLCAwKTsKKyAgICBn
X2ZyZWUobmFtZSk7CisgICAgZ19mcmVlKGxhYmVsKTsKKworICAgIHJldHVybiBhY3Rpb247Cit9
CisKK3N0YXRpYyBHdGtXaWRnZXQgKmJyb3dzZXJXaW5kb3dDcmVhdGVNZW51SXRlbUZyb21CYWNr
Rm9yd2FyZEl0ZW0oQnJvd3NlcldpbmRvdyAqd2luZG93LCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYgaXRlbSkKK3sKKyAgICBHdGtBY3Rpb24gKmFjdGlvbiA9IGNyZWF0ZUd0a0FjdGlvbkZyb21C
YWNrRm9yd2FyZEl0ZW0oaXRlbSk7CisgICAgaWYgKCFhY3Rpb24pCisgICAgICAgIHJldHVybiAw
OworCisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChhY3Rpb24pLCAiYmFjay1m
b3J3YXJkLWxpc3QtaXRlbSIsIChncG9pbnRlcilXS1JldGFpbihpdGVtKSwgKEdEZXN0cm95Tm90
aWZ5KVdLUmVsZWFzZSk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGFjdGlvbiwgImFj
dGl2YXRlIiwgR19DQUxMQkFDSyhicm93c2VyV2luZG93SGlzdG9yeUl0ZW1BY3RpdmF0ZWQpLCB3
aW5kb3cpOworCisgICAgR3RrV2lkZ2V0ICptZW51SXRlbSA9IGd0a19hY3Rpb25fY3JlYXRlX21l
bnVfaXRlbShhY3Rpb24pOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtZW51SXRlbSwg
InNlbGVjdCIsIEdfQ0FMTEJBQ0soYnJvd3NlcldpbmRvd0hpc3RvcnlJdGVtU2VsZWN0ZWQpLCB3
aW5kb3cpOworICAgIGdfb2JqZWN0X3VucmVmKGFjdGlvbik7CisKKyAgICByZXR1cm4gbWVudUl0
ZW07Cit9CisKK3N0YXRpYyBHdGtXaWRnZXQgKmJyb3dzZXJXaW5kb3dDcmVhdGVCYWNrRm9yd2Fy
ZE1lbnUoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXS0FycmF5UmVmIGxpc3QpCit7CisgICAgZ3Vp
bnQgaTsKKworICAgIGlmICghbGlzdCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBndWludCBs
aXN0Q291bnQgPSBXS0FycmF5R2V0U2l6ZShsaXN0KTsKKyAgICBpZiAoIWxpc3RDb3VudCkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBHdGtXaWRnZXQgKm1lbnUgPSBndGtfbWVudV9uZXcoKTsK
KyAgICBnYm9vbGVhbiBoYXNJdGVtcyA9IEZBTFNFOworICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0
Q291bnQ7IGkrKykgeworICAgICAgICBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgaXRlbSA9IFdL
QXJyYXlHZXRJdGVtQXRJbmRleChsaXN0LCBpKTsKKyAgICAgICAgR3RrV2lkZ2V0ICptZW51SXRl
bSA9IGJyb3dzZXJXaW5kb3dDcmVhdGVNZW51SXRlbUZyb21CYWNrRm9yd2FyZEl0ZW0od2luZG93
LCBpdGVtKTsKKyAgICAgICAgaWYgKCFtZW51SXRlbSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIGd0a19tZW51X3NoZWxsX3ByZXBlbmQoR1RLX01FTlVfU0hFTEwobWVudSksIG1l
bnVJdGVtKTsKKyAgICAgICAgZ3RrX3dpZGdldF9zaG93KG1lbnVJdGVtKTsKKyAgICAgICAgaGFz
SXRlbXMgPSBUUlVFOworICAgIH0KKworICAgIGlmICghaGFzSXRlbXMpIHsKKyAgICAgICAgZ3Rr
X3dpZGdldF9kZXN0cm95KG1lbnUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbWVudTsKK30KKworc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRp
b25BY3Rpb25zKEJyb3dzZXJXaW5kb3cqIHdpbmRvdykKK3sKKyAgICBndGtfd2lkZ2V0X3NldF9z
ZW5zaXRpdmUod2luZG93LT5iYWNrSXRlbSwgV0tQYWdlQ2FuR29CYWNrKFdLVmlld0dldFBhZ2Uo
d2luZG93LT53ZWJWaWV3KSkpOworICAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSh3aW5kb3ct
PmZvcndhcmRJdGVtLCBXS1BhZ2VDYW5Hb0ZvcndhcmQoV0tWaWV3R2V0UGFnZSh3aW5kb3ctPndl
YlZpZXcpKSk7CisKKyAgICBXS0FycmF5UmVmIGxpc3QgPSBXS0JhY2tGb3J3YXJkTGlzdENvcHlC
YWNrTGlzdFdpdGhMaW1pdCh3aW5kb3ctPmhpc3RvcnksIDEwKTsKKyAgICBHdGtXaWRnZXQgKm1l
bnUgPSBicm93c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KHdpbmRvdywgbGlzdCk7Cisg
ICAgZ3RrX21lbnVfdG9vbF9idXR0b25fc2V0X21lbnUoR1RLX01FTlVfVE9PTF9CVVRUT04od2lu
ZG93LT5iYWNrSXRlbSksIG1lbnUpOworICAgIGlmIChsaXN0KQorICAgICAgICBXS1JlbGVhc2Uo
bGlzdCk7CisKKyAgICBsaXN0ID0gV0tCYWNrRm9yd2FyZExpc3RDb3B5Rm9yd2FyZExpc3RXaXRo
TGltaXQod2luZG93LT5oaXN0b3J5LCAxMCk7CisgICAgbWVudSA9IGJyb3dzZXJXaW5kb3dDcmVh
dGVCYWNrRm9yd2FyZE1lbnUod2luZG93LCBsaXN0KTsKKyAgICBndGtfbWVudV90b29sX2J1dHRv
bl9zZXRfbWVudShHVEtfTUVOVV9UT09MX0JVVFRPTih3aW5kb3ctPmZvcndhcmRJdGVtKSwgbWVu
dSk7CisgICAgaWYgKGxpc3QpCisgICAgICAgIFdLUmVsZWFzZShsaXN0KTsKK30KKwogLy8gTG9h
ZGVyIGNsaWVudC4KIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKQEAgLTM2Niw2ICs0ODEsMTEgQEAgc3RhdGljIHZvaWQg
ZGlkQmVjb21lUmVzcG9uc2l2ZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKIH0KIAorc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdLUGFnZVJl
ZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJl
bW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBicm93c2VyV2luZG93
VXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoQlJPV1NFUl9XSU5ET1coY2xpZW50SW5mbykpOworfQor
CiBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93TG9hZGVyQ2xpZW50SW5pdChCcm93c2VyV2luZG93
KiB3aW5kb3cpCiB7CiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRDbGllbnQgPSB7CkBAIC0z
OTMsNyArNTEzLDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0xvYWRlckNsaWVudEluaXQo
QnJvd3NlcldpbmRvdyogd2luZG93KQogICAgICAgICBkaWRCZWNvbWVVbnJlc3BvbnNpdmUsCiAg
ICAgICAgIGRpZEJlY29tZVJlc3BvbnNpdmUsCiAgICAgICAgIDAsICAgICAgIC8qIHByb2Nlc3NE
aWRDcmFzaCAqLwotICAgICAgICAwLCAgICAgICAvKiBkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3Qg
Ki8KKyAgICAgICAgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0LAogICAgICAgICAwLCAgICAgICAv
KiBzaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSAqLwogICAgICAgICAwICAgICAgICAvKiBk
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luICovCiAgICAgfTsK
</data>
<flag name="review"
          id="93033"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>