<?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>26611</bug_id>
          
          <creation_ts>2009-06-22 10:56:21 -0700</creation_ts>
          <short_desc>Implement currentThreadStackBase on WinCE</short_desc>
          <delta_ts>2009-06-23 08:47:06 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Other</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>
          
          <blocked>23154</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Joe Mason">joenotcharles</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>manyoso</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>127380</commentid>
    <comment_count>0</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-06-22 10:56:21 -0700</bug_when>
    <thetext>WinCE has no function to find the stack base, so we keep a global, g_stackBase, which must be set to the address of a local variable by the caller before calling any WebKit function that invokes JSC.  currentThreadStackBase simply returns this value if it is set.

If g_stackBase is not set, as a workaround currentThreadStackBase finds the top of the stack (address of a local variable), and then goes through all writeable pages reachable from this address.  This actually returns an area much bigger than the actual stack range, so some dead objects can&apos;t be collected, but it guarantees live objects aren&apos;t collected prematurely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127388</commentid>
    <comment_count>1</comment_count>
      <attachid>31657</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-06-22 11:08:02 -0700</bug_when>
    <thetext>Created attachment 31657
currentThreadStackBase for WinCE

This patch is from Yong Li.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127396</commentid>
    <comment_count>2</comment_count>
      <attachid>31657</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-22 11:24:20 -0700</bug_when>
    <thetext>Comment on attachment 31657
currentThreadStackBase for WinCE

&gt; +2009-06-22  Yong Li  &lt;yong.li@torchmobile.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=26611
&gt; +        Implement currentThreadStackBase on WINCE

You should include the full description of the change here.  As well as document each new function you are adding where it is non-obvious.  Good to be concise, but not at the expense of true explanation.

&gt; +inline bool isPageWritable(void* p)

Please do not abbreviate the names of variables.  Spell out the variable using a good descriptive name.  Err on code readability and maintenance instead of less typing.

&gt; +    void* sp = (void*)(&amp;lower);
&gt; +    register char* curPage = (char*)((DWORD)sp &amp; ~(pageSize - 1));

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127405</commentid>
    <comment_count>3</comment_count>
      <attachid>31657</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-22 11:33:03 -0700</bug_when>
    <thetext>Comment on attachment 31657
currentThreadStackBase for WinCE

&gt; +2009-06-22  Yong Li  &lt;yong.li@torchmobile.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=26611
&gt; +        Implement currentThreadStackBase on WINCE

You should include the full description of the change here.  As well as document each new function you are adding where it is non-obvious.  Good to be concise, but not at the expense of true explanation.

&gt; +inline bool isPageWritable(void* p)

Please do not abbreviate the names of variables.  Spell out the variable using a good descriptive name.  Err on code readability and maintenance instead of less typing.

&gt; +    void* sp = (void*)(&amp;lower);
&gt; +    register char* curPage = (char*)((DWORD)sp &amp; ~(pageSize - 1));

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127406</commentid>
    <comment_count>4</comment_count>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-06-22 11:36:38 -0700</bug_when>
    <thetext>From Adam: 

  Also, the &apos;for (;;)&apos; looks dangerous if &apos;isPageWritable&apos; never returns false.

We can fix this by checking that curPage &gt; 0 when scanning downwards, or &lt; some max bound when scanning upwards.  Yong suggests 0x8000000.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127472</commentid>
    <comment_count>5</comment_count>
      <attachid>31682</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-06-22 15:43:37 -0700</bug_when>
    <thetext>Created attachment 31682
updated patch

This should fix the above issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127630</commentid>
    <comment_count>6</comment_count>
      <attachid>31682</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-23 07:43:15 -0700</bug_when>
    <thetext>Comment on attachment 31682
updated patch

Much better style, but still a few nits:

&gt; +inline bool isPageWritable(void* page)
&gt; +{
&gt; +    MEMORY_BASIC_INFORMATION buf;
&gt; +    DWORD result = VirtualQuery(page, &amp;buf, sizeof(buf));

s/buf/buffer/

&gt; +    if (!pageSize) {
&gt; +        SYSTEM_INFO sysInfo;

s/sysInfo/systemInfo/

&gt; +    register char* curPage = (char*)((DWORD)thisFrame &amp; ~(pageSize - 1));

s/curPage/currentPage/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127631</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-23 07:44:25 -0700</bug_when>
    <thetext>Also, Yong wrote some of this right?  The ChangeLog should include all authors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127632</commentid>
    <comment_count>8</comment_count>
      <attachid>31720</attachid>
    <who name="Joe Mason">joenotcharles</who>
    <bug_when>2009-06-23 07:59:17 -0700</bug_when>
    <thetext>Created attachment 31720
third patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127635</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2009-06-23 08:47:06 -0700</bug_when>
    <thetext>Landed with r44993.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31657</attachid>
            <date>2009-06-22 11:08:02 -0700</date>
            <delta_ts>2009-06-22 15:43:37 -0700</delta_ts>
            <desc>currentThreadStackBase for WinCE</desc>
            <filename>bug26611.patch</filename>
            <type>text/plain</type>
            <size>2541</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNTExNTY4Li4yZWZlNTdlIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDktMDYtMjIgIFlvbmcgTGkgIDx5b25nLmxpQHRvcmNobW9iaWxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY2MTEKKyAgICAgICAgSW1wbGVtZW50IGN1cnJl
bnRUaHJlYWRTdGFja0Jhc2Ugb24gV0lOQ0UKKworICAgICAgICAqIHJ1bnRpbWUvQ29sbGVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6aXNQYWdlV3JpdGFibGUpOgorICAgICAgICAoSlNDOjpnZXRT
dGFja0Jhc2UpOgorICAgICAgICAoSlNDOjpjdXJyZW50VGhyZWFkU3RhY2tCYXNlKToKKwogMjAw
OS0wNi0xOCAgWW9uZyBMaSAgPHlvbmcubGlAdG9yY2htb2JpbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2xsZWN0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3Bw
CmluZGV4IGNiNzY0ZTEuLjUxNGZkMzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29sbGVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5j
cHAKQEAgLTM5Myw2ICszOTMsNTIgQEAgdm9pZCogSGVhcDo6YWxsb2NhdGVOdW1iZXIoc2l6ZV90
IHMpCiAgICAgcmV0dXJuIGhlYXBBbGxvY2F0ZTxOdW1iZXJIZWFwPihzKTsKIH0KIAorCisjaWYg
UExBVEZPUk0oV0lOQ0UpCit2b2lkKiBnX3N0YWNrQmFzZSA9IDA7CisKK2lubGluZSBib29sIGlz
UGFnZVdyaXRhYmxlKHZvaWQqIHApCit7CisgICAgTUVNT1JZX0JBU0lDX0lORk9STUFUSU9OIGJ1
ZjsKKyAgICBEV09SRCByZXN1bHQgPSBWaXJ0dWFsUXVlcnkocCwgJmJ1Ziwgc2l6ZW9mKGJ1Zikp
OworICAgIGlmIChyZXN1bHQgIT0gc2l6ZW9mKGJ1ZikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIERXT1JEIHByb3RlY3QgPSBidWYuUHJvdGVjdCAmIH4oUEFHRV9HVUFSRCB8IFBBR0Vf
Tk9DQUNIRSk7CisgICAgcmV0dXJuIHByb3RlY3QgPT0gUEFHRV9SRUFEV1JJVEUKKyAgICAgICAg
fHwgcHJvdGVjdCA9PSBQQUdFX1dSSVRFQ09QWQorICAgICAgICB8fCBwcm90ZWN0ID09IFBBR0Vf
RVhFQ1VURV9SRUFEV1JJVEUKKyAgICAgICAgfHwgcHJvdGVjdCA9PSBQQUdFX0VYRUNVVEVfV1JJ
VEVDT1BZOworfQorCitzdGF0aWMgdm9pZCogZ2V0U3RhY2tCYXNlKHZvaWQqIHByZXZpb3VzRnJh
bWUpCit7CisgICAgYm9vbCBsb3dlciA9IHByZXZpb3VzRnJhbWUgPCAmbG93ZXI7CisgICAgc3Rh
dGljIERXT1JEIHBhZ2VTaXplID0gMDsKKyAgICBpZiAoIXBhZ2VTaXplKSB7CisgICAgICAgIFNZ
U1RFTV9JTkZPIHN5c0luZm87CisgICAgICAgIEdldFN5c3RlbUluZm8oJnN5c0luZm8pOworICAg
ICAgICBwYWdlU2l6ZSA9IHN5c0luZm8uZHdQYWdlU2l6ZTsKKyAgICB9CisgICAgdm9pZCogc3Ag
PSAodm9pZCopKCZsb3dlcik7CisgICAgcmVnaXN0ZXIgY2hhciogY3VyUGFnZSA9IChjaGFyKiko
KERXT1JEKXNwICYgfihwYWdlU2l6ZSAtIDEpKTsKKyAgICBpZiAobG93ZXIpIHsKKyAgICAgICAg
Zm9yICg7OykgeworICAgICAgICAgICAgY3VyUGFnZSAtPSBwYWdlU2l6ZTsKKyAgICAgICAgICAg
IGlmICghaXNQYWdlV3JpdGFibGUoY3VyUGFnZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGN1
clBhZ2UgKyBwYWdlU2l6ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZvciAo
OzspIHsKKyAgICAgICAgICAgIGN1clBhZ2UgKz0gcGFnZVNpemU7CisgICAgICAgICAgICBpZiAo
IWlzUGFnZVdyaXRhYmxlKGN1clBhZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBjdXJQYWdl
OworICAgICAgICB9CisgICAgfQorfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSB2b2lkKiBj
dXJyZW50VGhyZWFkU3RhY2tCYXNlKCkKIHsKICNpZiBQTEFURk9STShEQVJXSU4pCkBAIC00NTgs
NiArNTA0LDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCogY3VycmVudFRocmVhZFN0YWNrQmFzZSgp
CiAgICAgICAgIHN0YWNrVGhyZWFkID0gdGhyZWFkOwogICAgIH0KICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y2hhcio+KHN0YWNrQmFzZSkgKyBzdGFja1NpemU7CisjZWxpZiBQTEFURk9STShXSU5D
RSkKKyAgICBpZiAoZ19zdGFja0Jhc2UpCisgICAgICAgIHJldHVybiBnX3N0YWNrQmFzZTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgaW50IGR1bW15OworICAgICAgICByZXR1cm4gZ2V0U3RhY2tCYXNl
KCZkdW1teSk7CisgICAgfQogI2Vsc2UKICNlcnJvciBOZWVkIGEgd2F5IHRvIGdldCB0aGUgc3Rh
Y2sgYmFzZSBvbiB0aGlzIHBsYXRmb3JtCiAjZW5kaWYK
</data>
<flag name="review"
          id="16270"
          type_id="1"
          status="-"
          setter="manyoso"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31682</attachid>
            <date>2009-06-22 15:43:37 -0700</date>
            <delta_ts>2009-06-23 07:59:17 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bug26611.patch</filename>
            <type>text/plain</type>
            <size>3749</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNTExNTY4Li40NGQzNzg3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMDktMDYtMjIgIEpvZSBNYXNvbiAgPGpvZS5tYXNvbkB0b3JjaG1vYmlsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2NjExCisgICAgICAgIEltcGxlbWVudCBj
dXJyZW50VGhyZWFkU3RhY2tCYXNlIG9uIFdJTkNFIGJ5IGFkZGluZyBhIGdsb2JhbCwKKyAgICAg
ICAgZ19zdGFja0Jhc2UsIHdoaWNoIG11c3QgYmUgc2V0IHRvIHRoZSBhZGRyZXNzIG9mIGEgbG9j
YWwgdmFyaWFibGUKKyAgICAgICAgYnkgdGhlIGNhbGxlciBiZWZvcmUgY2FsbGluZyBhbnkgV2Vi
S2l0IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBKU0MuCisKKyAgICAgICAgKiBydW50aW1lL0NvbGxl
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmlzUGFnZVdyaXRhYmxlKTogCisgICAgICAgIChKU0M6
OmdldFN0YWNrQmFzZSk6CisgICAgICAgICAgU3RhcnRzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNr
IGFuZCByZXR1cm5zIHRoZSBlbnRpcmUgcmFuZ2Ugb2YKKyAgICAgICAgICBjb25zZWN1dGl2ZSB3
cml0YWJsZSBwYWdlcyBhcyBhbiBlc3RpbWF0ZSBvZiB0aGUgYWN0dWFsIHN0YWNrLgorICAgICAg
ICAgIFRoaXMgd2lsbCBiZSBtdWNoIGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwgc3RhY2sgcmFuZ2Us
IHNvIHNvbWUKKyAgICAgICAgICBkZWFkIG9iamVjdHMgY2FuJ3QgYmUgY29sbGVjdGVkLCBidXQg
aXQgZ3VhcmFudGVlcyBsaXZlIG9iamVjdHMKKyAgICAgICAgICBhcmVuJ3QgY29sbGVjdGVkIHBy
ZW1hdHVyZWx5LgorCisgICAgICAgIChKU0M6OmN1cnJlbnRUaHJlYWRTdGFja0Jhc2UpOgorICAg
ICAgICAgIE9uIFdpbkNFLCByZXR1cm5zIGdfc3RhY2tCYXNlIGlmIHNldCBvciBjYWxsIGdldFN0
YWNrQmFzZSBhcyBhCisgICAgICAgICAgZmFsbGJhY2sgaWYgbm90LgorCiAyMDA5LTA2LTE4ICBZ
b25nIExpICA8eW9uZy5saUB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxl
Y3Rvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKaW5kZXggY2I3
NjRlMS4uNjI3NDk5NyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0
b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcApAQCAtMzkz
LDYgKzM5Myw2NSBAQCB2b2lkKiBIZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICBy
ZXR1cm4gaGVhcEFsbG9jYXRlPE51bWJlckhlYXA+KHMpOwogfQogCisKKyNpZiBQTEFURk9STShX
SU5DRSkKK3ZvaWQqIGdfc3RhY2tCYXNlID0gMDsKKworaW5saW5lIGJvb2wgaXNQYWdlV3JpdGFi
bGUodm9pZCogcGFnZSkKK3sKKyAgICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gYnVmOworICAg
IERXT1JEIHJlc3VsdCA9IFZpcnR1YWxRdWVyeShwYWdlLCAmYnVmLCBzaXplb2YoYnVmKSk7CisK
KyAgICAvLyByZXR1cm4gZmFsc2Ugb24gZXJyb3IsIGluY2x1ZGluZyBwdHIgb3V0c2lkZSBtZW1v
cnkKKyAgICBpZiAocmVzdWx0ICE9IHNpemVvZihidWYpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBEV09SRCBwcm90ZWN0ID0gYnVmLlByb3RlY3QgJiB+KFBBR0VfR1VBUkQgfCBQQUdF
X05PQ0FDSEUpOworICAgIHJldHVybiBwcm90ZWN0ID09IFBBR0VfUkVBRFdSSVRFCisgICAgICAg
IHx8IHByb3RlY3QgPT0gUEFHRV9XUklURUNPUFkKKyAgICAgICAgfHwgcHJvdGVjdCA9PSBQQUdF
X0VYRUNVVEVfUkVBRFdSSVRFCisgICAgICAgIHx8IHByb3RlY3QgPT0gUEFHRV9FWEVDVVRFX1dS
SVRFQ09QWTsKK30KKworc3RhdGljIHZvaWQqIGdldFN0YWNrQmFzZSh2b2lkKiBwcmV2aW91c0Zy
YW1lKQoreworICAgIC8vIGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhpcyBzdGFjayBmcmFtZSBieSB0
YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSBsb2NhbCB2YXJpYWJsZQorICAgIGJvb2wgaXNHcm93aW5n
RG93bndhcmQ7CisgICAgdm9pZCogdGhpc0ZyYW1lID0gKHZvaWQqKSgmaXNHcm93aW5nRG93bndh
cmQpOworCisgICAgaXNHcm93aW5nRG93bndhcmQgPSBwcmV2aW91c0ZyYW1lIDwgJnRoaXNGcmFt
ZTsKKyAgICBzdGF0aWMgRFdPUkQgcGFnZVNpemUgPSAwOworICAgIGlmICghcGFnZVNpemUpIHsK
KyAgICAgICAgU1lTVEVNX0lORk8gc3lzSW5mbzsKKyAgICAgICAgR2V0U3lzdGVtSW5mbygmc3lz
SW5mbyk7CisgICAgICAgIHBhZ2VTaXplID0gc3lzSW5mby5kd1BhZ2VTaXplOworICAgIH0KKwor
ICAgIC8vIHNjYW4gYWxsIG9mIG1lbW9yeSBzdGFydGluZyBmcm9tIHRoaXMgZnJhbWUsIGFuZCBy
ZXR1cm4gdGhlIGxhc3Qgd3JpdGVhYmxlIHBhZ2UgZm91bmQKKyAgICByZWdpc3RlciBjaGFyKiBj
dXJQYWdlID0gKGNoYXIqKSgoRFdPUkQpdGhpc0ZyYW1lICYgfihwYWdlU2l6ZSAtIDEpKTsKKyAg
ICBpZiAoaXNHcm93aW5nRG93bndhcmQpIHsKKyAgICAgICAgd2hpbGUgKGN1clBhZ2UgPiAwKSB7
CisgICAgICAgICAgICAvLyBjaGVjayBmb3IgdW5kZXJmbG93CisgICAgICAgICAgICBpZiAoY3Vy
UGFnZSA+PSAoY2hhciopcGFnZVNpemUpCisgICAgICAgICAgICAgICAgY3VyUGFnZSAtPSBwYWdl
U2l6ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJQYWdlID0gMDsKKyAg
ICAgICAgICAgIGlmICghaXNQYWdlV3JpdGFibGUoY3VyUGFnZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGN1clBhZ2UgKyBwYWdlU2l6ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsK
KyAgICB9IGVsc2UgeworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgLy8gZ3Vh
cmFudGVlZCB0byBjb21wbGV0ZSBiZWNhdXNlIGlzUGFnZVdyaXRhYmxlIHJldHVybnMgZmFsc2Ug
YXQgZW5kIG9mIG1lbW9yeQorICAgICAgICAgICAgY3VyUGFnZSArPSBwYWdlU2l6ZTsKKyAgICAg
ICAgICAgIGlmICghaXNQYWdlV3JpdGFibGUoY3VyUGFnZSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGN1clBhZ2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyNlbmRpZgorCiBzdGF0aWMgaW5s
aW5lIHZvaWQqIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKQogewogI2lmIFBMQVRGT1JNKERBUldJ
TikKQEAgLTQ1OCw2ICs1MTcsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkKiBjdXJyZW50VGhyZWFk
U3RhY2tCYXNlKCkKICAgICAgICAgc3RhY2tUaHJlYWQgPSB0aHJlYWQ7CiAgICAgfQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjaGFyKj4oc3RhY2tCYXNlKSArIHN0YWNrU2l6ZTsKKyNlbGlmIFBM
QVRGT1JNKFdJTkNFKQorICAgIGlmIChnX3N0YWNrQmFzZSkKKyAgICAgICAgcmV0dXJuIGdfc3Rh
Y2tCYXNlOworICAgIGVsc2UgeworICAgICAgICBpbnQgZHVtbXk7CisgICAgICAgIHJldHVybiBn
ZXRTdGFja0Jhc2UoJmR1bW15KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yIE5lZWQgYSB3YXkgdG8g
Z2V0IHRoZSBzdGFjayBiYXNlIG9uIHRoaXMgcGxhdGZvcm0KICNlbmRpZgo=
</data>
<flag name="review"
          id="16288"
          type_id="1"
          status="-"
          setter="manyoso"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31720</attachid>
            <date>2009-06-23 07:59:17 -0700</date>
            <delta_ts>2009-06-23 08:31:08 -0700</delta_ts>
            <desc>third patch</desc>
            <filename>bug26611.patch</filename>
            <type>text/plain</type>
            <size>3961</size>
            <attacher name="Joe Mason">joenotcharles</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiNTExNTY4Li40NGQzNzg3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMDktMDYtMjIgIEpvZSBNYXNvbiAgPGpvZS5tYXNvbkB0b3JjaG1vYmlsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXV0aG9yczog
WW9uZyBMaSA8eW9uZy5saUB0b3JjaG1vYmlsZS5jb20+LCBKb2UgTWFzb24gPGpvZS5tYXNvbkB0
b3JjaG1vYmlsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI2NjExCisgICAgICAgIEltcGxlbWVudCBjdXJyZW50VGhyZWFkU3RhY2tCYXNl
IG9uIFdJTkNFIGJ5IGFkZGluZyBhIGdsb2JhbCwKKyAgICAgICAgZ19zdGFja0Jhc2UsIHdoaWNo
IG11c3QgYmUgc2V0IHRvIHRoZSBhZGRyZXNzIG9mIGEgbG9jYWwgdmFyaWFibGUKKyAgICAgICAg
YnkgdGhlIGNhbGxlciBiZWZvcmUgY2FsbGluZyBhbnkgV2ViS2l0IGZ1bmN0aW9uIHRoYXQgaW52
b2tlcyBKU0MuCisKKyAgICAgICAgKiBydW50aW1lL0NvbGxlY3Rvci5jcHA6CisgICAgICAgIChK
U0M6OmlzUGFnZVdyaXRhYmxlKTogCisgICAgICAgIChKU0M6OmdldFN0YWNrQmFzZSk6CisgICAg
ICAgICAgU3RhcnRzIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGFuZCByZXR1cm5zIHRoZSBlbnRp
cmUgcmFuZ2Ugb2YKKyAgICAgICAgICBjb25zZWN1dGl2ZSB3cml0YWJsZSBwYWdlcyBhcyBhbiBl
c3RpbWF0ZSBvZiB0aGUgYWN0dWFsIHN0YWNrLgorICAgICAgICAgIFRoaXMgd2lsbCBiZSBtdWNo
IGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwgc3RhY2sgcmFuZ2UsIHNvIHNvbWUKKyAgICAgICAgICBk
ZWFkIG9iamVjdHMgY2FuJ3QgYmUgY29sbGVjdGVkLCBidXQgaXQgZ3VhcmFudGVlcyBsaXZlIG9i
amVjdHMKKyAgICAgICAgICBhcmVuJ3QgY29sbGVjdGVkIHByZW1hdHVyZWx5LgorCisgICAgICAg
IChKU0M6OmN1cnJlbnRUaHJlYWRTdGFja0Jhc2UpOgorICAgICAgICAgIE9uIFdpbkNFLCByZXR1
cm5zIGdfc3RhY2tCYXNlIGlmIHNldCBvciBjYWxsIGdldFN0YWNrQmFzZSBhcyBhCisgICAgICAg
ICAgZmFsbGJhY2sgaWYgbm90LgorCiAyMDA5LTA2LTE4ICBZb25nIExpICA8eW9uZy5saUB0b3Jj
aG1vYmlsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbGxlY3Rvci5jcHAKaW5kZXggY2I3NjRlMS4uNjI3NDk5NyAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2xsZWN0b3IuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29sbGVjdG9yLmNwcApAQCAtMzkzLDYgKzM5Myw2NSBAQCB2b2lkKiBI
ZWFwOjphbGxvY2F0ZU51bWJlcihzaXplX3QgcykKICAgICByZXR1cm4gaGVhcEFsbG9jYXRlPE51
bWJlckhlYXA+KHMpOwogfQogCisKKyNpZiBQTEFURk9STShXSU5DRSkKK3ZvaWQqIGdfc3RhY2tC
YXNlID0gMDsKKworaW5saW5lIGJvb2wgaXNQYWdlV3JpdGFibGUodm9pZCogcGFnZSkKK3sKKyAg
ICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gbWVtb3J5SW5mb3JtYXRpb247CisgICAgRFdPUkQg
cmVzdWx0ID0gVmlydHVhbFF1ZXJ5KHBhZ2UsICZtZW1vcnlJbmZvcm1hdGlvbiwgc2l6ZW9mKG1l
bW9yeUluZm9ybWF0aW9uKSk7CisKKyAgICAvLyByZXR1cm4gZmFsc2Ugb24gZXJyb3IsIGluY2x1
ZGluZyBwdHIgb3V0c2lkZSBtZW1vcnkKKyAgICBpZiAocmVzdWx0ICE9IHNpemVvZihtZW1vcnlJ
bmZvcm1hdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERXT1JEIHByb3RlY3Qg
PSBtZW1vcnlJbmZvcm1hdGlvbi5Qcm90ZWN0ICYgfihQQUdFX0dVQVJEIHwgUEFHRV9OT0NBQ0hF
KTsKKyAgICByZXR1cm4gcHJvdGVjdCA9PSBQQUdFX1JFQURXUklURQorICAgICAgICB8fCBwcm90
ZWN0ID09IFBBR0VfV1JJVEVDT1BZCisgICAgICAgIHx8IHByb3RlY3QgPT0gUEFHRV9FWEVDVVRF
X1JFQURXUklURQorICAgICAgICB8fCBwcm90ZWN0ID09IFBBR0VfRVhFQ1VURV9XUklURUNPUFk7
Cit9CisKK3N0YXRpYyB2b2lkKiBnZXRTdGFja0Jhc2Uodm9pZCogcHJldmlvdXNGcmFtZSkKK3sK
KyAgICAvLyBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoaXMgc3RhY2sgZnJhbWUgYnkgdGFraW5nIHRo
ZSBhZGRyZXNzIG9mIGEgbG9jYWwgdmFyaWFibGUKKyAgICBib29sIGlzR3Jvd2luZ0Rvd253YXJk
OworICAgIHZvaWQqIHRoaXNGcmFtZSA9ICh2b2lkKikoJmlzR3Jvd2luZ0Rvd253YXJkKTsKKwor
ICAgIGlzR3Jvd2luZ0Rvd253YXJkID0gcHJldmlvdXNGcmFtZSA8ICZ0aGlzRnJhbWU7CisgICAg
c3RhdGljIERXT1JEIHBhZ2VTaXplID0gMDsKKyAgICBpZiAoIXBhZ2VTaXplKSB7CisgICAgICAg
IFNZU1RFTV9JTkZPIHN5c3RlbUluZm87CisgICAgICAgIEdldFN5c3RlbUluZm8oJnN5c3RlbUlu
Zm8pOworICAgICAgICBwYWdlU2l6ZSA9IHN5c3RlbUluZm8uZHdQYWdlU2l6ZTsKKyAgICB9CisK
KyAgICAvLyBzY2FuIGFsbCBvZiBtZW1vcnkgc3RhcnRpbmcgZnJvbSB0aGlzIGZyYW1lLCBhbmQg
cmV0dXJuIHRoZSBsYXN0IHdyaXRlYWJsZSBwYWdlIGZvdW5kCisgICAgcmVnaXN0ZXIgY2hhciog
Y3VycmVudFBhZ2UgPSAoY2hhciopKChEV09SRCl0aGlzRnJhbWUgJiB+KHBhZ2VTaXplIC0gMSkp
OworICAgIGlmIChpc0dyb3dpbmdEb3dud2FyZCkgeworICAgICAgICB3aGlsZSAoY3VycmVudFBh
Z2UgPiAwKSB7CisgICAgICAgICAgICAvLyBjaGVjayBmb3IgdW5kZXJmbG93CisgICAgICAgICAg
ICBpZiAoY3VycmVudFBhZ2UgPj0gKGNoYXIqKXBhZ2VTaXplKQorICAgICAgICAgICAgICAgIGN1
cnJlbnRQYWdlIC09IHBhZ2VTaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGN1cnJlbnRQYWdlID0gMDsKKyAgICAgICAgICAgIGlmICghaXNQYWdlV3JpdGFibGUoY3VycmVu
dFBhZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UGFnZSArIHBhZ2VTaXplOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAvLyBndWFyYW50ZWVkIHRvIGNvbXBsZXRlIGJlY2F1c2Ug
aXNQYWdlV3JpdGFibGUgcmV0dXJucyBmYWxzZSBhdCBlbmQgb2YgbWVtb3J5CisgICAgICAgICAg
ICBjdXJyZW50UGFnZSArPSBwYWdlU2l6ZTsKKyAgICAgICAgICAgIGlmICghaXNQYWdlV3JpdGFi
bGUoY3VycmVudFBhZ2UpKQorICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50UGFnZTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgdm9pZCogY3VycmVu
dFRocmVhZFN0YWNrQmFzZSgpCiB7CiAjaWYgUExBVEZPUk0oREFSV0lOKQpAQCAtNDU4LDYgKzUx
NywxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQqIGN1cnJlbnRUaHJlYWRTdGFja0Jhc2UoKQogICAg
ICAgICBzdGFja1RocmVhZCA9IHRocmVhZDsKICAgICB9CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNoYXIqPihzdGFja0Jhc2UpICsgc3RhY2tTaXplOworI2VsaWYgUExBVEZPUk0oV0lOQ0UpCisg
ICAgaWYgKGdfc3RhY2tCYXNlKQorICAgICAgICByZXR1cm4gZ19zdGFja0Jhc2U7CisgICAgZWxz
ZSB7CisgICAgICAgIGludCBkdW1teTsKKyAgICAgICAgcmV0dXJuIGdldFN0YWNrQmFzZSgmZHVt
bXkpOworICAgIH0KICNlbHNlCiAjZXJyb3IgTmVlZCBhIHdheSB0byBnZXQgdGhlIHN0YWNrIGJh
c2Ugb24gdGhpcyBwbGF0Zm9ybQogI2VuZGlmCg==
</data>
<flag name="review"
          id="16316"
          type_id="1"
          status="+"
          setter="manyoso"
    />
          </attachment>
      

    </bug>

</bugzilla>