<?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>37952</bug_id>
          
          <creation_ts>2010-04-21 14:47:51 -0700</creation_ts>
          <short_desc>Create a template for reference-counted Windows GDI handles.</short_desc>
          <delta_ts>2010-04-22 08:00:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>37954</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>aroben</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215509</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-21 14:47:51 -0700</bug_when>
    <thetext>There currently exists a class called RefCountedHFONT, which wraps a GDI HFONT in a reference-counted container.  There is a need to reference count other GDI handles in the Windows port, so it would be useful to have a generic class that can reference count any GDI handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215561</commentid>
    <comment_count>1</comment_count>
      <attachid>54003</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-21 16:28:26 -0700</bug_when>
    <thetext>Created attachment 54003
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215563</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-21 16:30:40 -0700</bug_when>
    <thetext>Attachment 54003 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/platform/graphics/cairo/FontPlatformData.h:41:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215588</commentid>
    <comment_count>3</comment_count>
      <attachid>54003</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-21 17:49:24 -0700</bug_when>
    <thetext>Comment on attachment 54003
patch

This is OK as is, but there is one thing we should improve. The hash function here should be:

    return PtrHash&lt;T&gt;(m_handle);

Once you change it to work that way you can remove the include of StringImpl.h.

If this wasn&apos;t all inlined, I would also suggest making a base class, since the only functions in RefCountedGDIHandle that are different based on type are the create() function, the constructor, and the handle() function. But since everything is inlined anyway, I don&apos;t think there&apos;s any real benefit to doing so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215667</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2010-04-21 20:19:54 -0700</bug_when>
    <thetext>Committed revision 58045.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215879</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-22 08:00:30 -0700</bug_when>
    <thetext>Using OwnPtr in the implementation of your new class template would have made things even simpler, and would allow this class template to be used for non-GDI objects.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54003</attachid>
            <date>2010-04-21 16:28:26 -0700</date>
            <delta_ts>2010-04-21 17:49:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>37952.patch</filename>
            <type>text/plain</type>
            <size>10391</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODAxNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDQtMjEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0
ZSBhIHRlbXBsYXRlIGZvciBjcmVhdGluZyByZWZlcmVuY2UtY291bnRlZCBXaW5kb3dzIEdESSBo
YW5kbGVzLgorICAgICAgICBSZWZhY3RvciBSZWZDb3VudGVkSEZPTlQgdG8gdXNlIHRoaXMgdGVt
cGxhdGUuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vRm9udFBsYXRmb3JtRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFBsYXRmb3Jt
RGF0YTo6aGZvbnQpOiBSZWZhY3RvciB0byByZXR1cm4gbV9oZm9udC0+aGFuZGxlKCkgaW5zdGVh
ZCBvZiBtX2hmb250LT5oZm9udCgpLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0Zv
bnRQbGF0Zm9ybURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Omhm
b250KTogU2FtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YUNHV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6OkZvbnRQ
bGF0Zm9ybURhdGEpOiBJbnN0YW50aWF0ZSBtX2hmb250IHdpdGggYSBSZWZDb3VudGVkR0RJSGFu
ZGxlPEhGT05UPi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3Jt
RGF0YVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhOjpGb250UGxh
dGZvcm1EYXRhKTogU2FtZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291
bnRlZEdESUhhbmRsZS5oOiBBZGRlZC4gSW50ZXJmYWNlIGlzIGlkZW50aWNhbCB0byBSZWZDb3Vu
dGVkSEZPTlQgd2l0aCBleGNlcHRpb24gb2YgcmVuYW1pbmcgaGZvbnQoKSB0byBoYW5kbGUoKS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlZkNvdW50ZWRHRElIYW5kbGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWZDb3VudGVkR0RJSGFuZGxlOjpjcmVhdGVEZWxldGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlZkNvdW50ZWRHRElIYW5kbGU6On5SZWZDb3VudGVkR0RJSGFuZGxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlZkNvdW50ZWRHRElIYW5kbGU6OmhhbmRsZSk6IFJldHVybiB0aGUg
R0RJIGhhbmRsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlZkNvdW50ZWRHRElIYW5kbGU6Omhhc2gp
OgorICAgICAgICAoV2ViQ29yZTo6UmVmQ291bnRlZEdESUhhbmRsZTo6UmVmQ291bnRlZEdESUhh
bmRsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1JlZkNvdW50ZWRIRk9OVC5o
OiBSZW1vdmVkLgorCiAyMDEwLTA0LTIxICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDU3OTUxKQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM0ODUsNyArMjM0ODUs
NyBAQAogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkSEZPTlQuaCINCisJCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXHdpblxSZWZDb3VudGVkR0RJSGFu
ZGxlLmgiDQogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQbGF0Zm9ybURhdGEuaAko
cmV2aXNpb24gNTc5NTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRQ
bGF0Zm9ybURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUg
PHBhbmdvL3BhbmdvY2Fpcm8uaD4KICNlbGlmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxjYWly
by13aW4zMi5oPgotI2luY2x1ZGUgIlJlZkNvdW50ZWRIRk9OVC5oIgorI2luY2x1ZGUgIlJlZkNv
dW50ZWRHRElIYW5kbGUuaCIKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjZWxzZQogI2Vycm9y
ICJNdXN0IGRlZmluZWQgYSBmb250IGJhY2tlbmQiCkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGlj
OgogI2lmICFQTEFURk9STShXSU4pCiAgICAgc3RhdGljIGJvb2wgaW5pdCgpOwogI2Vsc2UKLSAg
ICBIRk9OVCBoZm9udCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udC0+aGZvbnQoKTsgfQorICAgIEhG
T05UIGhmb250KCkgY29uc3QgeyByZXR1cm4gbV9mb250LT5oYW5kbGUoKTsgfQogICAgIGJvb2wg
dXNlR0RJKCkgY29uc3QgeyByZXR1cm4gbV91c2VHREk7IH0KICAgICBjYWlyb19mb250X2ZhY2Vf
dCogZm9udEZhY2UoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRGYWNlOyB9CiAjZW5kaWYKQEAgLTE2
NCw3ICsxNjQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1EYXRhSW5p
dChIRk9OVCwgZmxvYXQgc2l6ZSwgSERDLCBXQ0hBUiogZmFjZU5hbWUpOwogCi0gICAgUmVmUHRy
PFJlZkNvdW50ZWRIRk9OVD4gbV9mb250OworICAgIFJlZlB0cjxSZWZDb3VudGVkR0RJSGFuZGxl
PEhGT05UPiA+IG1fZm9udDsKICAgICBjYWlyb19mb250X2ZhY2VfdCogbV9mb250RmFjZTsKICAg
ICBib29sIG1fdXNlR0RJOwogI2Vsc2UKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvRm9udFBsYXRmb3JtRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvRm9udFBsYXRmb3JtRGF0YS5oCShyZXZpc2lvbiA1Nzk1MSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvRm9udFBsYXRmb3JtRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWZuZGVmIEZvbnRQbGF0Zm9ybURhdGFfaAogI2RlZmluZSBGb250
UGxhdGZvcm1EYXRhX2gKIAotI2luY2x1ZGUgIlJlZkNvdW50ZWRIRk9OVC5oIgorI2luY2x1ZGUg
IlJlZkNvdW50ZWRHRElIYW5kbGUuaCIKICNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgRm9udFBsYXRmb3JtRGF0YShXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9mb250KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKSB7IH0K
ICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9mb250
LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIAotICAgIEhGT05UIGhmb250KCkgY29uc3Qg
eyByZXR1cm4gbV9mb250LT5oZm9udCgpOyB9CisgICAgSEZPTlQgaGZvbnQoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnQtPmhhbmRsZSgpOyB9CiAgICAgQ0dGb250UmVmIGNnRm9udCgpIGNvbnN0IHsg
cmV0dXJuIG1fY2dGb250LmdldCgpOyB9CiAKICAgICBmbG9hdCBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CkBAIC04OCw3ICs4OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9p
ZCBwbGF0Zm9ybURhdGFJbml0KEhGT05ULCBmbG9hdCBzaXplLCBIREMsIFdDSEFSKiBmYWNlTmFt
ZSk7CiAKLSAgICBSZWZQdHI8UmVmQ291bnRlZEhGT05UPiBtX2ZvbnQ7CisgICAgUmVmUHRyPFJl
ZkNvdW50ZWRHRElIYW5kbGU8SEZPTlQ+ID4gbV9mb250OwogICAgIFJldGFpblB0cjxDR0ZvbnRS
ZWY+IG1fY2dGb250OwogCiAgICAgZmxvYXQgbV9zaXplOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udFBsYXRmb3JtRGF0YUNHV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhQ0dXaW4uY3BwCShy
ZXZpc2lvbiA1Nzk1MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRQbGF0
Zm9ybURhdGFDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IEZvbnRQbGF0Zm9ybURhdGE6OnBsYXRmb3JtRGF0YUluaXQoCiB9CiAKIEZvbnRQbGF0Zm9ybURh
dGE6OkZvbnRQbGF0Zm9ybURhdGEoSEZPTlQgaGZvbnQsIENHRm9udFJlZiBmb250LCBmbG9hdCBz
aXplLCBib29sIGJvbGQsIGJvb2wgb2JsaXF1ZSwgYm9vbCB1c2VHREkpCi0gICAgOiBtX2ZvbnQo
UmVmQ291bnRlZEhGT05UOjpjcmVhdGUoaGZvbnQpKQorICAgIDogbV9mb250KFJlZkNvdW50ZWRH
RElIYW5kbGU8SEZPTlQ+OjpjcmVhdGUoaGZvbnQpKQogICAgICwgbV9zaXplKHNpemUpCiAgICAg
LCBtX2NnRm9udChmb250KQogICAgICwgbV9zeW50aGV0aWNCb2xkKGJvbGQpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250UGxhdGZvcm1EYXRhV2lu
LmNwcAkocmV2aXNpb24gNTc5NTEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250UGxhdGZvcm1EYXRhV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCB1
c2luZyBzdGQ6Om1pbjsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRm9udFBsYXRmb3JtRGF0YTo6
Rm9udFBsYXRmb3JtRGF0YShIRk9OVCBmb250LCBmbG9hdCBzaXplLCBib29sIGJvbGQsIGJvb2wg
b2JsaXF1ZSwgYm9vbCB1c2VHREkpCi0gICAgOiBtX2ZvbnQoUmVmQ291bnRlZEhGT05UOjpjcmVh
dGUoZm9udCkpCisgICAgOiBtX2ZvbnQoUmVmQ291bnRlZEdESUhhbmRsZTxIRk9OVD46OmNyZWF0
ZShmb250KSkKICAgICAsIG1fc2l6ZShzaXplKQogI2lmIFBMQVRGT1JNKENHKQogICAgICwgbV9j
Z0ZvbnQoMCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL1JlZkNvdW50ZWRH
RElIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9S
ZWZDb3VudGVkR0RJSGFuZGxlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9SZWZDb3VudGVkR0RJSGFuZGxlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlZkNvdW50ZWRHRElIYW5kbGVfaAorI2RlZmlu
ZSBSZWZDb3VudGVkR0RJSGFuZGxlX2gKKworI2luY2x1ZGUgIlN0cmluZ0ltcGwuaCIKKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUmVmQ291bnRlZEdESUhh
bmRsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFJlZkNvdW50ZWRHRElIYW5kbGU8VD4gPiB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmQ291bnRlZEdESUhhbmRsZT4gY3JlYXRlKFQg
aGFuZGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZDb3VudGVkR0RJ
SGFuZGxlPFQ+KGhhbmRsZSkpOworICAgIH0KKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZkNv
dW50ZWRHRElIYW5kbGU8VD4gPiBjcmVhdGVEZWxldGVkKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVmQ291bnRlZEdESUhhbmRsZTxUPihyZWludGVycHJldF9jYXN0PFQ+
KC0xKSkpOworICAgIH0KKworICAgIH5SZWZDb3VudGVkR0RJSGFuZGxlKCkKKyAgICB7CisgICAg
ICAgIGlmIChtX2hhbmRsZSAmJiBtX2hhbmRsZSAhPSByZWludGVycHJldF9jYXN0PFQ+KC0xKSkK
KyAgICAgICAgICAgIDo6RGVsZXRlT2JqZWN0KG1faGFuZGxlKTsKKyAgICB9CisKKyAgICBUIGhh
bmRsZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oYW5kbGU7CisgICAgfQorCisg
ICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nSW1w
bDo6Y29tcHV0ZUhhc2gocmVpbnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KCZtX2hhbmRsZSks
IHNpemVvZihUKSAvIHNpemVvZihVQ2hhcikpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWZD
b3VudGVkR0RJSGFuZGxlKFQgaGFuZGxlKQorICAgICAgICA6IG1faGFuZGxlKGhhbmRsZSkKKyAg
ICB7CisgICAgfQorCisgICAgVCBtX2hhbmRsZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIFJlZkNvdW50ZWRHRElIYW5kbGVfaApJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291bnRlZEhGT05ULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291bnRlZEhGT05ULmgJKHJldmlzaW9uIDU3OTUx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vUmVmQ291bnRlZEhGT05ULmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotI2lmbmRlZiBSZWZDb3VudGVkSEZPTlRfaAot
I2RlZmluZSBSZWZDb3VudGVkSEZPTlRfaAotCi0jaW5jbHVkZSAiU3RyaW5nSW1wbC5oIgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
UmVmQ291bnRlZEhGT05UIDogcHVibGljIFJlZkNvdW50ZWQ8UmVmQ291bnRlZEhGT05UPiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVmQ291bnRlZEhGT05UPiBjcmVhdGUoSEZP
TlQgaGZvbnQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZDb3VudGVkSEZPTlQoaGZvbnQpKTsg
fQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlZkNvdW50ZWRIRk9OVD4gY3JlYXRlRGVsZXRlZCgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWZDb3VudGVkSEZPTlQocmVpbnRlcnByZXRfY2FzdDxI
Rk9OVD4oLTEpKSk7IH0KLQotICAgIH5SZWZDb3VudGVkSEZPTlQoKQotICAgIHsKLSAgICAgICAg
aWYgKG1faGZvbnQgIT0gcmVpbnRlcnByZXRfY2FzdDxIRk9OVD4oLTEpKQotICAgICAgICAgICAg
RGVsZXRlT2JqZWN0KG1faGZvbnQpOwotICAgIH0KLQotICAgIEhGT05UIGhmb250KCkgY29uc3Qg
eyByZXR1cm4gbV9oZm9udDsgfQotICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNvbXB1dGVIYXNoKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgVUNoYXIqPigmbV9oZm9udCksIHNpemVvZihIRk9OVCkgLyBzaXplb2YoVUNoYXIpKTsKLSAg
ICB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmQ291bnRlZEhGT05UKEhGT05UIGhmb250KQotICAgICAg
ICA6IG1faGZvbnQoaGZvbnQpCi0gICAgewotICAgIH0KLQotICAgIEhGT05UIG1faGZvbnQ7Ci19
OwotCi19Ci0KLSNlbmRpZgo=
</data>
<flag name="review"
          id="37853"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>