<?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>9698</bug_id>
          
          <creation_ts>2006-07-02 10:33:55 -0700</creation_ts>
          <short_desc>Switch JSC Bindings from CFDictionary to HashMap</short_desc>
          <delta_ts>2007-10-01 08:48:02 -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>JavaScriptCore</component>
          <version>420+</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Haygood">jhaygood</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>48026</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2006-07-02 10:33:55 -0700</bug_when>
    <thetext>I poked around a bit yesterday at this, seems quite simple to do. It will be a good first step to allow a portable bindings system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48028</commentid>
    <comment_count>1</comment_count>
      <attachid>9148</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2006-07-02 10:58:33 -0700</bug_when>
    <thetext>Created attachment 9148
Make NPRuntime use HashMap

First initial patch for porting of bindings to HashMap.

Untested, since I don&apos;t have a Mac available, but it does cleanly compile on VS2005. Also includes &lt;stdint.h&gt; into npruntime.h so that the integer and unsigned types are defined (int32_t, uint32_t, etc..) so that it compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48047</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-07-02 15:06:28 -0700</bug_when>
    <thetext>Patch includes tabs, please remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48053</commentid>
    <comment_count>3</comment_count>
      <attachid>9148</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-07-02 16:22:00 -0700</bug_when>
    <thetext>Comment on attachment 9148
Make NPRuntime use HashMap

Our style guidlines also call for splitting lines like this into two:
+	if (!stringIdentifierDictionary) stringIdentifierDictionary = new HashMap&lt; const char *, PrivateIdentifier *&gt;();

The patch looks correct overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48059</commentid>
    <comment_count>4</comment_count>
      <attachid>9162</attachid>
    <who name="Justin Haygood">jhaygood</who>
    <bug_when>2006-07-02 18:48:51 -0700</bug_when>
    <thetext>Created attachment 9162
Make NPRuntime use HashMap

Here is a revised patch to follow code style guidelines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48091</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-07-03 10:33:31 -0700</bug_when>
    <thetext>A few things I tweaked before landing:
- The new patch you submitted still had tabs in it. You can use tools like emacs (Ctrl-s) and less (/) to search for tabs. A better solution is just to set your editor up to use spaces instead of tabs.
- A typedef can often make template code more readable.
- Our style guildines call for Type* rather than Type * in c++ code.

Please take note of these in the future.

Committed revision 15146.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48126</commentid>
    <comment_count>6</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-07-03 18:42:22 -0700</bug_when>
    <thetext>This was rolled out in r15148 by Darin.  Log message:

- Rolled out HashMap implementation of NPRuntime, at least temporarily. Fixes hang in the bindings section of layout tests seen on the buildbot. This code was using HashMap&lt;const char*, PrivateIdentifier*&gt;. But that hashes based on pointer identity, not string value. The default hash for any pointer type is to hash based on the pointer. And WTF doesn&apos;t currently have a string hash for char*. We&apos;ll need to fix that before re-landing this patch. (Formatting was also incorrect -- extra spaces in parentheses.)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>48137</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-07-03 19:54:27 -0700</bug_when>
    <thetext>OK, marking r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57533</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-01 08:48:02 -0700</bug_when>
    <thetext>This looks like it has been long since done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9148</attachid>
            <date>2006-07-02 10:58:33 -0700</date>
            <delta_ts>2006-07-02 18:48:51 -0700</delta_ts>
            <desc>Make NPRuntime use HashMap</desc>
            <filename>npruntime-hashmap.diff</filename>
            <type>text/plain</type>
            <size>5545</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTUx
MzgpDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE2IEBADQorMjAw
Ni0wNy0wMiAgSnVzdGluIEhheWdvb2QgPGpoYXlnb29kQHNwc3UuZWR1DQorDQorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisJCQ0KKwkJLSBQb3J0IE5QUnVudGltZSBmcm9t
IENGRGljdGlvbmFyeSB0byBIYXNoTWFwLg0KKw0KKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1bnRp
bWUuY3BwOg0KKyAgICAgICAgKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KToNCisgICAg
ICAgIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSk6DQorICAgICAgICAoX05QTl9HZXRTdHJp
bmdJZGVudGlmaWVyKToNCisgICAgICAgIChfTlBOX0dldEludElkZW50aWZpZXIpOg0KKyAgICAg
ICAgKiBiaW5kaW5ncy9ucHJ1bnRpbWUuaDoNCisNCiAyMDA2LTA2LTI5ICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouDQpJ
bmRleDogYmluZGluZ3MvbnBydW50aW1lLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGJpbmRpbmdzL25w
cnVudGltZS5jcHAJKHJldmlzaW9uIDE1MTM4KQ0KKysrIGJpbmRpbmdzL25wcnVudGltZS5jcHAJ
KHdvcmtpbmcgY29weSkNCkBAIC0xLDUgKzEsNiBAQA0KIC8qDQogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyAq
IENvcHlyaWdodCAoQykgMjAwNiBKdXN0aW4gSGF5Z29vZCA8amhheWdvb2RAc3BzdS5lZHU+Lg0K
ICAqDQogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zDQpAQCAtMjksNTUgKzMwLDI1IEBADQog
I2luY2x1ZGUgIm5wcnVudGltZV9wcml2LmgiDQogDQogI2luY2x1ZGUgImNfdXRpbGl0eS5oIg0K
LSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPg0KIA0KLS8vIEZJWE1F
OiBVc2UgSGFzaE1hcCBpbnN0ZWFkIG9mIENGRGljdGlvbmFyeSBmb3IgYmV0dGVyIHBlcmZvcm1h
bmNlIGFuZCBwb3J0YWJpbGl0eS4NCisjaW5jbHVkZSA8YXNzZXJ0Lmg+DQorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+DQogDQogdXNpbmcgbmFtZXNwYWNlIEtKUzo6QmluZGluZ3M7DQogDQotc3Rh
dGljIEJvb2xlYW4gc3RyaW5nSWRlbnRpZmllckVxdWFsKGNvbnN0IHZvaWQqIHZhbHVlMSwgY29u
c3Qgdm9pZCogdmFsdWUyKQ0KK3N0YXRpYyBIYXNoTWFwPCBjb25zdCBjaGFyICosIFByaXZhdGVJ
ZGVudGlmaWVyICo+KiBnZXRTdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSgpDQogew0KLSAgICBy
ZXR1cm4gc3RyY21wKChjb25zdCBjaGFyKil2YWx1ZTEsIChjb25zdCBjaGFyKil2YWx1ZTIpID09
IDA7DQotfQ0KLQ0KLXN0YXRpYyBDRkhhc2hDb2RlIHN0cmluZ0lkZW50aWZpZXJIYXNoKGNvbnN0
IHZvaWQqIHZhbHVlKQ0KLXsNCi0gICAgY29uc3QgdW5zaWduZWQgY2hhcioga2V5ID0gKGNvbnN0
IHVuc2lnbmVkIGNoYXIqKXZhbHVlOw0KLSAgICB1bnNpZ25lZCBsZW4gPSBzdHJsZW4oKGNvbnN0
IGNoYXIqKWtleSk7DQotICAgIHVuc2lnbmVkIHJlc3VsdCA9IGxlbjsNCi0NCi0gICAgaWYgKGxl
biA8PSAxNikgew0KLSAgICAgICAgdW5zaWduZWQgY250ID0gbGVuOw0KLSAgICAgICAgd2hpbGUg
KGNudC0tKQ0KLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDI1NyArICprZXkrKzsNCi0g
ICAgfSBlbHNlIHsNCi0gICAgICAgIHVuc2lnbmVkIGNudDsNCi0gICAgICAgIGZvciAoY250ID0g
ODsgY250ID4gMDsgY250LS0pDQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMjU3ICsg
KmtleSsrOw0KLSAgICAgICAga2V5ICs9IChsZW4gLSAxNik7DQotICAgICAgICBmb3IgKGNudCA9
IDg7IGNudCA+IDA7IGNudC0tKQ0KLSAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDI1NyAr
ICprZXkrKzsNCi0gICAgfQ0KLSAgICByZXN1bHQgKz0gKHJlc3VsdCA8PCAobGVuICYgMzEpKTsN
CiANCi0gICAgcmV0dXJuIHJlc3VsdDsNCi19DQorCXN0YXRpYyBIYXNoTWFwPCBjb25zdCBjaGFy
ICosIFByaXZhdGVJZGVudGlmaWVyICo+KiBzdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSA9IDA7
DQorCWlmICghc3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkpIHN0cmluZ0lkZW50aWZpZXJEaWN0
aW9uYXJ5ID0gbmV3IEhhc2hNYXA8IGNvbnN0IGNoYXIgKiwgUHJpdmF0ZUlkZW50aWZpZXIgKj4o
KTsNCisJcmV0dXJuIHN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5OwkNCiANCi1zdGF0aWMgQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZiBnZXRTdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSgpDQotew0K
LSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdHJpbmdJZGVudGlmaWVyRGljdGlv
bmFyeSA9IDA7DQotICAgIGlmICghc3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkpIHsNCi0gICAg
ICAgIENGRGljdGlvbmFyeUtleUNhbGxCYWNrcyBzdHJpbmdJZGVudGlmaWVyQ2FsbGJhY2tzID0g
eyAwLCBOVUxMLCBOVUxMLCBOVUxMLCBzdHJpbmdJZGVudGlmaWVyRXF1YWwsIHN0cmluZ0lkZW50
aWZpZXJIYXNoIH07DQotICAgICAgICBzdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSA9IENGRGlj
dGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJnN0cmluZ0lkZW50aWZpZXJDYWxsYmFja3Ms
IE5VTEwpOw0KLSAgICB9DQotICAgIHJldHVybiBzdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeTsN
CiB9DQogDQotc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZ2V0SW50SWRlbnRpZmllckRp
Y3Rpb25hcnkoKQ0KK3N0YXRpYyBIYXNoTWFwPCBpbnQsIFByaXZhdGVJZGVudGlmaWVyICo+KiBn
ZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpDQogew0KLSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeSA9IDA7DQotICAgIGlmICghaW50SWRl
bnRpZmllckRpY3Rpb25hcnkpDQotICAgICAgICBpbnRJZGVudGlmaWVyRGljdGlvbmFyeSA9IENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7DQorICAgIHN0YXRp
YyBIYXNoTWFwPCBpbnQsIFByaXZhdGVJZGVudGlmaWVyICo+KiBpbnRJZGVudGlmaWVyRGljdGlv
bmFyeSA9IDA7DQorICAgIGlmICghaW50SWRlbnRpZmllckRpY3Rpb25hcnkpIGludElkZW50aWZp
ZXJEaWN0aW9uYXJ5ID0gbmV3IEhhc2hNYXA8IGludCwgUHJpdmF0ZUlkZW50aWZpZXIgKj4oKTsN
CiAgICAgcmV0dXJuIGludElkZW50aWZpZXJEaWN0aW9uYXJ5Ow0KIH0NCiANCkBAIC04OCw3ICs1
OSw3IEBAIE5QSWRlbnRpZmllciBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY28NCiAgICAgaWYg
KG5hbWUpIHsNCiAgICAgICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsNCiAg
ICAgICAgIA0KLSAgICAgICAgaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciopQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKSwgbmFtZSk7DQor
ICAgICAgICBpZGVudGlmaWVyID0gZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25hcnkoKS0+Z2V0
KCBuYW1lICk7DQogICAgICAgICBpZiAoaWRlbnRpZmllciA9PSAwKSB7DQogICAgICAgICAgICAg
aWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciopbWFsbG9jKHNpemVvZihQcml2YXRlSWRl
bnRpZmllcikpOw0KICAgICAgICAgICAgIC8vIFdlIG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBu
YW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwgZ3JvdywgYXMgd2lsbA0KQEAgLTk3LDcgKzY4
LDcgQEAgTlBJZGVudGlmaWVyIF9OUE5fR2V0U3RyaW5nSWRlbnRpZmllcihjbw0KICAgICAgICAg
ICAgIGNvbnN0IGNoYXIqIGlkZW50aWZpZXJOYW1lID0gc3RyZHVwKG5hbWUpOw0KICAgICAgICAg
ICAgIGlkZW50aWZpZXItPnZhbHVlLnN0cmluZyA9IGlkZW50aWZpZXJOYW1lOw0KIA0KLSAgICAg
ICAgICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5
KCksIGlkZW50aWZpZXJOYW1lLCBpZGVudGlmaWVyKTsNCisJCQlnZXRTdHJpbmdJZGVudGlmaWVy
RGljdGlvbmFyeSgpLT5hZGQoaWRlbnRpZmllck5hbWUsIGlkZW50aWZpZXIpOw0KICAgICAgICAg
fQ0KICAgICAgICAgcmV0dXJuIChOUElkZW50aWZpZXIpaWRlbnRpZmllcjsNCiAgICAgfQ0KQEAg
LTExOSwxNCArOTAsMTQgQEAgTlBJZGVudGlmaWVyIF9OUE5fR2V0SW50SWRlbnRpZmllcihpbnQz
Mg0KIHsNCiAgICAgUHJpdmF0ZUlkZW50aWZpZXIqIGlkZW50aWZpZXIgPSAwOw0KICAgICANCi0g
ICAgaWRlbnRpZmllciA9IChQcml2YXRlSWRlbnRpZmllciopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
Z2V0SW50SWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZvaWQqKWludGlkKTsNCisgICAg
aWRlbnRpZmllciA9IGdldEludElkZW50aWZpZXJEaWN0aW9uYXJ5KCktPmdldCggaW50aWQgKTsN
CiAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgew0KICAgICAgICAgaWRlbnRpZmllciA9IChQcml2
YXRlSWRlbnRpZmllciopbWFsbG9jKHNpemVvZihQcml2YXRlSWRlbnRpZmllcikpOw0KICAgICAg
ICAgLy8gV2UgbmV2ZXIgcmVsZWFzZSBpZGVudGlmaWVyIG5hbWVzLCBzbyB0aGlzIGRpY3Rpb25h
cnkgd2lsbCBncm93Lg0KICAgICAgICAgaWRlbnRpZmllci0+aXNTdHJpbmcgPSBmYWxzZTsNCiAg
ICAgICAgIGlkZW50aWZpZXItPnZhbHVlLm51bWJlciA9IGludGlkOw0KIA0KLSAgICAgICAgQ0ZE
aWN0aW9uYXJ5QWRkVmFsdWUoZ2V0SW50SWRlbnRpZmllckRpY3Rpb25hcnkoKSwgKGNvbnN0IHZv
aWQqKWludGlkLCBpZGVudGlmaWVyKTsNCisJCWdldEludElkZW50aWZpZXJEaWN0aW9uYXJ5KCkt
PmFkZCggaW50aWQsIGlkZW50aWZpZXIgKTsNCiAgICAgfQ0KICAgICByZXR1cm4gKE5QSWRlbnRp
ZmllcilpZGVudGlmaWVyOw0KIH0NCkluZGV4OiBiaW5kaW5ncy9ucHJ1bnRpbWUuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIGJpbmRpbmdzL25wcnVudGltZS5oCShyZXZpc2lvbiAxNTEzOCkNCisrKyBiaW5k
aW5ncy9ucHJ1bnRpbWUuaAkod29ya2luZyBjb3B5KQ0KQEAgLTcyLDYgKzcyLDcgQEANCiBleHRl
cm4gIkMiIHsNCiAjZW5kaWYNCiANCisjaW5jbHVkZSA8c3RkaW50Lmg+DQogI2luY2x1ZGUgIm5w
YXBpLmgiDQogDQogLyoNCg==
</data>
<flag name="review"
          id="2738"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>9162</attachid>
            <date>2006-07-02 18:48:51 -0700</date>
            <delta_ts>2006-07-03 19:53:58 -0700</delta_ts>
            <desc>Make NPRuntime use HashMap</desc>
            <filename>npruntime-hashmap.diff</filename>
            <type>text/plain</type>
            <size>5543</size>
            <attacher name="Justin Haygood">jhaygood</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIENoYW5nZUxvZwkocmV2aXNpb24gMTUx
NDApDQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpDQpAQCAtMSwzICsxLDE2IEBADQorMjAw
Ni0wNy0wMiAgSnVzdGluIEhheWdvb2QgPGpoYXlnb29kQHNwc3UuZWR1DQorDQorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4NCisJCQ0KKwkJLSBQb3J0IE5QUnVudGltZSBmcm9t
IENGRGljdGlvbmFyeSB0byBIYXNoTWFwLg0KKw0KKyAgICAgICAgKiBiaW5kaW5ncy9ucHJ1bnRp
bWUuY3BwOg0KKyAgICAgICAgKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KToNCisgICAg
ICAgIChnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSk6DQorICAgICAgICAoX05QTl9HZXRTdHJp
bmdJZGVudGlmaWVyKToNCisgICAgICAgIChfTlBOX0dldEludElkZW50aWZpZXIpOg0KKyAgICAg
ICAgKiBiaW5kaW5ncy9ucHJ1bnRpbWUuaDoNCisNCiAyMDA2LTA3LTAxICBHZW9mZnJleSBHYXJl
biAgPGdnYXJlbkBhcHBsZS5jb20+DQogDQogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZS4NCklu
ZGV4OiBiaW5kaW5ncy9ucHJ1bnRpbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gYmluZGluZ3MvbnBy
dW50aW1lLmNwcAkocmV2aXNpb24gMTUxNDApDQorKysgYmluZGluZ3MvbnBydW50aW1lLmNwcAko
d29ya2luZyBjb3B5KQ0KQEAgLTEsNSArMSw2IEBADQogLyoNCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICog
Q29weXJpZ2h0IChDKSAyMDA2IEp1c3RpbiBIYXlnb29kIDxqaGF5Z29vZEBzcHN1LmVkdT4uDQog
ICoNCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQNCiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCkBAIC0yOSw1NSArMzAsMjcgQEANCiAj
aW5jbHVkZSAibnBydW50aW1lX3ByaXYuaCINCiANCiAjaW5jbHVkZSAiY191dGlsaXR5LmgiDQot
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+DQogDQotLy8gRklYTUU6
IFVzZSBIYXNoTWFwIGluc3RlYWQgb2YgQ0ZEaWN0aW9uYXJ5IGZvciBiZXR0ZXIgcGVyZm9ybWFu
Y2UgYW5kIHBvcnRhYmlsaXR5Lg0KKyNpbmNsdWRlIDxhc3NlcnQuaD4NCisjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4NCiANCiB1c2luZyBuYW1lc3BhY2UgS0pTOjpCaW5kaW5nczsNCiANCi1zdGF0
aWMgQm9vbGVhbiBzdHJpbmdJZGVudGlmaWVyRXF1YWwoY29uc3Qgdm9pZCogdmFsdWUxLCBjb25z
dCB2b2lkKiB2YWx1ZTIpDQorc3RhdGljIEhhc2hNYXA8IGNvbnN0IGNoYXIgKiwgUHJpdmF0ZUlk
ZW50aWZpZXIgKj4qIGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KCkNCiB7DQotICAgIHJl
dHVybiBzdHJjbXAoKGNvbnN0IGNoYXIqKXZhbHVlMSwgKGNvbnN0IGNoYXIqKXZhbHVlMikgPT0g
MDsNCi19DQotDQotc3RhdGljIENGSGFzaENvZGUgc3RyaW5nSWRlbnRpZmllckhhc2goY29uc3Qg
dm9pZCogdmFsdWUpDQotew0KLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBrZXkgPSAoY29uc3Qg
dW5zaWduZWQgY2hhciopdmFsdWU7DQotICAgIHVuc2lnbmVkIGxlbiA9IHN0cmxlbigoY29uc3Qg
Y2hhciopa2V5KTsNCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gbGVuOw0KLQ0KLSAgICBpZiAobGVu
IDw9IDE2KSB7DQotICAgICAgICB1bnNpZ25lZCBjbnQgPSBsZW47DQotICAgICAgICB3aGlsZSAo
Y250LS0pDQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMjU3ICsgKmtleSsrOw0KLSAg
ICB9IGVsc2Ugew0KLSAgICAgICAgdW5zaWduZWQgY250Ow0KLSAgICAgICAgZm9yIChjbnQgPSA4
OyBjbnQgPiAwOyBjbnQtLSkNCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAyNTcgKyAq
a2V5Kys7DQotICAgICAgICBrZXkgKz0gKGxlbiAtIDE2KTsNCi0gICAgICAgIGZvciAoY250ID0g
ODsgY250ID4gMDsgY250LS0pDQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMjU3ICsg
KmtleSsrOw0KLSAgICB9DQotICAgIHJlc3VsdCArPSAocmVzdWx0IDw8IChsZW4gJiAzMSkpOw0K
IA0KLSAgICByZXR1cm4gcmVzdWx0Ow0KLX0NCisgICAgc3RhdGljIEhhc2hNYXA8IGNvbnN0IGNo
YXIgKiwgUHJpdmF0ZUlkZW50aWZpZXIgKj4qIHN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5ID0g
MDsNCisgICAgaWYgKCFzdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSkNCisgICAgICAgIHN0cmlu
Z0lkZW50aWZpZXJEaWN0aW9uYXJ5ID0gbmV3IEhhc2hNYXA8IGNvbnN0IGNoYXIgKiwgUHJpdmF0
ZUlkZW50aWZpZXIgKj4oKTsNCisgICAgcmV0dXJuIHN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5
OwkNCiANCi1zdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBnZXRTdHJpbmdJZGVudGlmaWVy
RGljdGlvbmFyeSgpDQotew0KLSAgICBzdGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdHJp
bmdJZGVudGlmaWVyRGljdGlvbmFyeSA9IDA7DQotICAgIGlmICghc3RyaW5nSWRlbnRpZmllckRp
Y3Rpb25hcnkpIHsNCi0gICAgICAgIENGRGljdGlvbmFyeUtleUNhbGxCYWNrcyBzdHJpbmdJZGVu
dGlmaWVyQ2FsbGJhY2tzID0geyAwLCBOVUxMLCBOVUxMLCBOVUxMLCBzdHJpbmdJZGVudGlmaWVy
RXF1YWwsIHN0cmluZ0lkZW50aWZpZXJIYXNoIH07DQotICAgICAgICBzdHJpbmdJZGVudGlmaWVy
RGljdGlvbmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoTlVMTCwgMCwgJnN0cmluZ0lk
ZW50aWZpZXJDYWxsYmFja3MsIE5VTEwpOw0KLSAgICB9DQotICAgIHJldHVybiBzdHJpbmdJZGVu
dGlmaWVyRGljdGlvbmFyeTsNCiB9DQogDQotc3RhdGljIENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
Z2V0SW50SWRlbnRpZmllckRpY3Rpb25hcnkoKQ0KK3N0YXRpYyBIYXNoTWFwPCBpbnQsIFByaXZh
dGVJZGVudGlmaWVyICo+KiBnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpDQogew0KLSAgICBz
dGF0aWMgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeSA9IDA7
DQorICAgIHN0YXRpYyBIYXNoTWFwPCBpbnQsIFByaXZhdGVJZGVudGlmaWVyICo+KiBpbnRJZGVu
dGlmaWVyRGljdGlvbmFyeSA9IDA7DQogICAgIGlmICghaW50SWRlbnRpZmllckRpY3Rpb25hcnkp
DQotICAgICAgICBpbnRJZGVudGlmaWVyRGljdGlvbmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZU11
dGFibGUoTlVMTCwgMCwgTlVMTCwgTlVMTCk7DQorICAgICAgICBpbnRJZGVudGlmaWVyRGljdGlv
bmFyeSA9IG5ldyBIYXNoTWFwPCBpbnQsIFByaXZhdGVJZGVudGlmaWVyICo+KCk7DQogICAgIHJl
dHVybiBpbnRJZGVudGlmaWVyRGljdGlvbmFyeTsNCiB9DQogDQpAQCAtODgsNyArNjEsNyBAQCBO
UElkZW50aWZpZXIgX05QTl9HZXRTdHJpbmdJZGVudGlmaWVyKGNvDQogICAgIGlmIChuYW1lKSB7
DQogICAgICAgICBQcml2YXRlSWRlbnRpZmllciogaWRlbnRpZmllciA9IDA7DQogICAgICAgICAN
Ci0gICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKUNGRGljdGlvbmFyeUdl
dFZhbHVlKGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KCksIG5hbWUpOw0KKyAgICAgICAg
aWRlbnRpZmllciA9IGdldFN0cmluZ0lkZW50aWZpZXJEaWN0aW9uYXJ5KCktPmdldCggbmFtZSAp
Ow0KICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gMCkgew0KICAgICAgICAgICAgIGlkZW50aWZp
ZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIp
KTsNCiAgICAgICAgICAgICAvLyBXZSBuZXZlciByZWxlYXNlIGlkZW50aWZpZXIgbmFtZXMsIHNv
IHRoaXMgZGljdGlvbmFyeSB3aWxsIGdyb3csIGFzIHdpbGwNCkBAIC05Nyw3ICs3MCw3IEBAIE5Q
SWRlbnRpZmllciBfTlBOX0dldFN0cmluZ0lkZW50aWZpZXIoY28NCiAgICAgICAgICAgICBjb25z
dCBjaGFyKiBpZGVudGlmaWVyTmFtZSA9IHN0cmR1cChuYW1lKTsNCiAgICAgICAgICAgICBpZGVu
dGlmaWVyLT52YWx1ZS5zdHJpbmcgPSBpZGVudGlmaWVyTmFtZTsNCiANCi0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShnZXRTdHJpbmdJZGVudGlmaWVyRGljdGlvbmFyeSgpLCBpZGVu
dGlmaWVyTmFtZSwgaWRlbnRpZmllcik7DQorCQkJZ2V0U3RyaW5nSWRlbnRpZmllckRpY3Rpb25h
cnkoKS0+YWRkKGlkZW50aWZpZXJOYW1lLCBpZGVudGlmaWVyKTsNCiAgICAgICAgIH0NCiAgICAg
ICAgIHJldHVybiAoTlBJZGVudGlmaWVyKWlkZW50aWZpZXI7DQogICAgIH0NCkBAIC0xMTksMTQg
KzkyLDE0IEBAIE5QSWRlbnRpZmllciBfTlBOX0dldEludElkZW50aWZpZXIoaW50MzINCiB7DQog
ICAgIFByaXZhdGVJZGVudGlmaWVyKiBpZGVudGlmaWVyID0gMDsNCiAgICAgDQotICAgIGlkZW50
aWZpZXIgPSAoUHJpdmF0ZUlkZW50aWZpZXIqKUNGRGljdGlvbmFyeUdldFZhbHVlKGdldEludElk
ZW50aWZpZXJEaWN0aW9uYXJ5KCksIChjb25zdCB2b2lkKilpbnRpZCk7DQorICAgIGlkZW50aWZp
ZXIgPSBnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLT5nZXQoIGludGlkICk7DQogICAgIGlm
IChpZGVudGlmaWVyID09IDApIHsNCiAgICAgICAgIGlkZW50aWZpZXIgPSAoUHJpdmF0ZUlkZW50
aWZpZXIqKW1hbGxvYyhzaXplb2YoUHJpdmF0ZUlkZW50aWZpZXIpKTsNCiAgICAgICAgIC8vIFdl
IG5ldmVyIHJlbGVhc2UgaWRlbnRpZmllciBuYW1lcywgc28gdGhpcyBkaWN0aW9uYXJ5IHdpbGwg
Z3Jvdy4NCiAgICAgICAgIGlkZW50aWZpZXItPmlzU3RyaW5nID0gZmFsc2U7DQogICAgICAgICBp
ZGVudGlmaWVyLT52YWx1ZS5udW1iZXIgPSBpbnRpZDsNCiANCi0gICAgICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGdldEludElkZW50aWZpZXJEaWN0aW9uYXJ5KCksIChjb25zdCB2b2lkKilpbnRp
ZCwgaWRlbnRpZmllcik7DQorICAgICAgICBnZXRJbnRJZGVudGlmaWVyRGljdGlvbmFyeSgpLT5h
ZGQoIGludGlkLCBpZGVudGlmaWVyICk7DQogICAgIH0NCiAgICAgcmV0dXJuIChOUElkZW50aWZp
ZXIpaWRlbnRpZmllcjsNCiB9DQpJbmRleDogYmluZGluZ3MvbnBydW50aW1lLmgNCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBiaW5kaW5ncy9ucHJ1bnRpbWUuaAkocmV2aXNpb24gMTUxNDApDQorKysgYmluZGlu
Z3MvbnBydW50aW1lLmgJKHdvcmtpbmcgY29weSkNCkBAIC03Miw2ICs3Miw3IEBADQogZXh0ZXJu
ICJDIiB7DQogI2VuZGlmDQogDQorI2luY2x1ZGUgPHN0ZGludC5oPg0KICNpbmNsdWRlICJucGFw
aS5oIg0KIA0KIC8qDQo=
</data>
<flag name="review"
          id="2744"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>