<?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>108139</bug_id>
          
          <creation_ts>2013-01-28 17:34:17 -0800</creation_ts>
          <short_desc>Upstream iOS&apos;s AtomicString</short_desc>
          <delta_ts>2013-02-04 14:22:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>818311</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-28 17:34:17 -0800</bug_when>
    <thetext>Some more upstreaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818339</commentid>
    <comment_count>1</comment_count>
      <attachid>185123</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-28 18:12:25 -0800</bug_when>
    <thetext>Created attachment 185123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818400</commentid>
    <comment_count>2</comment_count>
      <attachid>185123</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-01-28 19:23:02 -0800</bug_when>
    <thetext>Comment on attachment 185123
Patch

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

&gt; Source/WTF/wtf/text/AtomicString.cpp:34
&gt; +#include &lt;libkern/OSAtomic.h&gt;

Can we use TCSpinLock instead?

&gt; Source/WTF/wtf/text/AtomicString.cpp:44
&gt; +#if PLATFORM(IOS)

I would like this to be a check for something more specific.  Maybe USE(WEB_THREAD)

&gt; Source/WTF/wtf/text/AtomicString.cpp:121
&gt; +#if PLATFORM(IOS)
&gt; +    AtomicStringTableLocker locker;
&gt; +#endif

Instead of having all these #ifdefs at the call site, could we just make those without a WebThread have an empty implementation of AtomicStringTableLocker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818424</commentid>
    <comment_count>3</comment_count>
      <attachid>185123</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-28 20:04:38 -0800</bug_when>
    <thetext>Comment on attachment 185123
Patch

&gt; &gt; Source/WTF/wtf/text/AtomicString.cpp:44
&gt; &gt; +#if PLATFORM(IOS)
&gt; 
&gt; I would like this to be a check for something more specific.  Maybe USE(WEB_THREAD)

I like that idea.

&gt; &gt; Source/WTF/wtf/text/AtomicString.cpp:121
&gt; &gt; +#if PLATFORM(IOS)
&gt; &gt; +    AtomicStringTableLocker locker;
&gt; &gt; +#endif
&gt; 
&gt; Instead of having all these #ifdefs at the call site, could we just make those without a WebThread have an empty implementation of AtomicStringTableLocker?

I am afraid someone will misunderstand what it is and use AtomicStringTableLocker at a bad place. With the #ifdef, it is clear you should not touch that if not for iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818472</commentid>
    <comment_count>4</comment_count>
      <attachid>185123</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-28 21:25:25 -0800</bug_when>
    <thetext>Comment on attachment 185123
Patch

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

&gt; Source/WTF/ChangeLog:9
&gt; +        On iOS, WebCore can be executed from two different threads. To maintain consistency,
&gt; +        a few changes had been made:

How many changes are required in WebCore to deal with this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818511</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-28 22:00:58 -0800</bug_when>
    <thetext>&gt; &gt; Source/WTF/ChangeLog:9
&gt; &gt; +        On iOS, WebCore can be executed from two different threads. To maintain consistency,
&gt; &gt; +        a few changes had been made:
&gt; 
&gt; How many changes are required in WebCore to deal with this issue?

Not much in common code. It requires quite a bit of code in the iOS platform code. The code does not become multithreaded in any way, the two threads are exclusive.

A lot of assertions (ASSERT(isMainThread())) need to be updated but that change is completely transparent if you don&apos;t have a WebThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819480</commentid>
    <comment_count>6</comment_count>
      <attachid>185340</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-01-29 16:39:09 -0800</bug_when>
    <thetext>Created attachment 185340
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820087</commentid>
    <comment_count>7</comment_count>
      <attachid>185340</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-01-30 04:38:46 -0800</bug_when>
    <thetext>Comment on attachment 185340
Patch

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

&gt; Source/WTF/wtf/Platform.h:620
&gt; +#define WTF_USE_WEB_THREAD 1

What about USE(IOS_WEB_THREAD) instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824662</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 12:48:25 -0800</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/Platform.h:620
&gt; &gt; +#define WTF_USE_WEB_THREAD 1
&gt; 
&gt; What about USE(IOS_WEB_THREAD) instead?

I think having IOS in a USE() macro defeats the purpose a bit. But maybe Web_Thread is ambiguous?
Maybe?:
USE(WEBCORE_WITH_THREADS)
USE(THREADED_ACCESSS)
USE(MULTITHREAD_WEBKIT)

I don&apos;t mind in any way. I can update the macro before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824691</commentid>
    <comment_count>9</comment_count>
      <attachid>185340</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-02-04 13:21:18 -0800</bug_when>
    <thetext>Comment on attachment 185340
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824761</commentid>
    <comment_count>10</comment_count>
      <attachid>185340</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 14:22:11 -0800</bug_when>
    <thetext>Comment on attachment 185340
Patch

Clearing flags on attachment: 185340

Committed r141812: &lt;http://trac.webkit.org/changeset/141812&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824762</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-04 14:22:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185123</attachid>
            <date>2013-01-28 18:12:25 -0800</date>
            <delta_ts>2013-01-29 16:39:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108139-20130128180912.patch</filename>
            <type>text/plain</type>
            <size>5814</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzMmE3ZmYyOGU4ZjU3ZWJiZGE2N2Y1
ZGQ5N2QxY2YxNmRlNDU5MjYuLmU4MmY0MTUzNmRiODhjMzc3YzBiNjA5YzFlNGMwY2U4NmFmYzg2
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMzIgQEAKIDIwMTMtMDEtMjggIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgogCisgICAgICAgIFVwc3RyZWFtIGlPUydzIEF0b21pY1N0cmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gaU9T
LCBXZWJDb3JlIGNhbiBiZSBleGVjdXRlZCBmcm9tIHR3byBkaWZmZXJlbnQgdGhyZWFkcy4gVG8g
bWFpbnRhaW4gY29uc2lzdGVuY3ksCisgICAgICAgIGEgZmV3IGNoYW5nZXMgaGFkIGJlZW4gbWFk
ZToKKyAgICAgICAgLVRoZSBtYWluIFVJIHRocmVhZCBhbmQgdGhlIFdlYlRocmVhZCBzaGFyZSB0
aGUgc2FtZSBBdG9taWNTdHJpbmdUYWJsZS4KKyAgICAgICAgLUEgc3BpbiBsb2NrIGlzIG5lZWRl
ZCBiZWZvcmUgYW55IGFjY2VzcyB0byBwcmV2ZW50IGFueSBjb25jdXJyZW50IG1vZGlmaWNhdGlv
biBvZiB0aGUgc3RyaW5nIHRhYmxlLgorICAgICAgICAgVGhlIHNwaW4gbG9jayBhbHNvIHByZXZl
bnQgcmFjZSBvbiB0aGUgc3RhdGljIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzaGFyZWQgdGFibGUu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwOgorICAgICAgICAoQXRvbWlj
U3RyaW5nVGFibGVMb2NrZXIpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmdUYWJsZUxvY2tl
cjo6QXRvbWljU3RyaW5nVGFibGVMb2NrZXIpOgorICAgICAgICAoV1RGOjpBdG9taWNTdHJpbmdU
YWJsZUxvY2tlcjo6fkF0b21pY1N0cmluZ1RhYmxlTG9ja2VyKToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nVGFibGU6OmNyZWF0ZSk6CisgICAgICAgIHd0ZlRocmVhZERhdGEoKSBpcyBub3Qg
bmVjZXNzYXJpbHkgaW5saW5lZCBvbiBBUk0uIFdoZW4gaXQgaXMgbm90IGlubGluZWQsIHRoZSBv
bGQgY29kZQorICAgICAgICBjYXVzZXMgdHdvIGNhbGwgdG8gdGhlIGZ1bmN0aW9uLiBJbnN0ZWFk
LCB3ZSBjYW4ga2VlcCB0aGUgdmFsdWUgaW4gcmVnaXN0ZXIgYW5kIHBhc3MgaXQKKyAgICAgICAg
dG8gQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgpLgorICAgICAgICAoV1RGOjpzdHJpbmdUYWJs
ZSk6CisgICAgICAgIChXVEY6OmFkZFRvU3RyaW5nVGFibGUpOgorICAgICAgICAoV1RGOjpBdG9t
aWNTdHJpbmc6OmFkZFNsb3dDYXNlKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpmaW5k
KToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjpyZW1vdmUpOgorCisyMDEzLTAxLTI4ICBC
ZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKwogICAgICAgICBTdHJpbmcg
Y29uc3RydWN0ZWQgZnJvbSBMaXRlcmFscyBzaG91bGQgYmUgbm9uLWVtcHR5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgxMDMKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYv
dGV4dC9BdG9taWNTdHJpbmcuY3BwCmluZGV4IDg3MzJlYTg0ZmNmZWFmNjY3ZWIzMDRiYTBiZjYy
NDA0N2EzYzEyMjcuLmEzYjJhZDIzMjdmMGQ4NjdlNWVmNGM0YTNjNjg2OWE4ODcyNDIyNGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAKQEAgLTMwLDI0ICszMCw2MCBAQAogI2lu
Y2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOC5o
PgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgPGxpYmtlcm4vT1NBdG9taWMuaD4KKyNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXVEYgewogCiB1
c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEF0b21pY1N0
cmluZykgPT0gc2l6ZW9mKFN0cmluZyksIGF0b21pY19zdHJpbmdfYW5kX3N0cmluZ19tdXN0X2Jl
X3NhbWVfc2l6ZSk7CiAKKyNpZiBQTEFURk9STShJT1MpCitjbGFzcyBBdG9taWNTdHJpbmdUYWJs
ZUxvY2tlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXRvbWljU3RyaW5nVGFibGVMb2Nr
ZXIpOworCisgICAgc3RhdGljIE9TU3BpbkxvY2sgc19zdHJpbmdUYWJsZUxvY2s7CitwdWJsaWM6
CisgICAgQXRvbWljU3RyaW5nVGFibGVMb2NrZXIoKQorICAgIHsKKyAgICAgICAgT1NTcGluTG9j
a0xvY2soJnNfc3RyaW5nVGFibGVMb2NrKTsKKyAgICB9CisgICAgfkF0b21pY1N0cmluZ1RhYmxl
TG9ja2VyKCkKKyAgICB7CisgICAgICAgIE9TU3BpbkxvY2tVbmxvY2soJnNfc3RyaW5nVGFibGVM
b2NrKTsKKyAgICB9Cit9OworCitPU1NwaW5Mb2NrIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyOjpz
X3N0cmluZ1RhYmxlTG9jayA9IE9TX1NQSU5MT0NLX0lOSVQ7CisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKQorCiBjbGFzcyBBdG9taWNTdHJpbmdUYWJsZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEF0b21pY1N0cmluZ1RhYmxlKiBjcmVhdGUoKQor
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmdUYWJsZSogY3JlYXRlKFdURlRocmVhZERhdGEmIGRhdGEp
CiAgICAgewotICAgICAgICBBdG9taWNTdHJpbmdUYWJsZSogdGFibGUgPSBuZXcgQXRvbWljU3Ry
aW5nVGFibGU7Ci0KLSAgICAgICAgV1RGVGhyZWFkRGF0YSYgZGF0YSA9IHd0ZlRocmVhZERhdGEo
KTsKLSAgICAgICAgZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlID0gdGFibGU7CisjaWYgUExBVEZP
Uk0oSU9TKQorICAgICAgICAvLyBPbiBpT1MsIG9uZSBBdG9taWNTdHJpbmdUYWJsZSBpcyBzaGFy
ZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCisgICAgICAg
IHN0YXRpYyBBdG9taWNTdHJpbmdUYWJsZSogc2hhcmVkU3RyaW5nVGFibGUgPSBuZXcgQXRvbWlj
U3RyaW5nVGFibGU7CisKKyAgICAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQgPSBp
c1dlYlRocmVhZCgpOworICAgICAgICBpZiAoY3VycmVudFRocmVhZElzV2ViVGhyZWFkIHx8IGlz
VUlUaHJlYWQoKSkKKyAgICAgICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZSA9IHNoYXJl
ZFN0cmluZ1RhYmxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhLm1fYXRvbWljU3Ry
aW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisKKyAgICAgICAgLy8gV2UgZG8gdGhl
IGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0cnVjdGlvbiBoYXBwZW5zIG9ubHkKKyAgICAgICAg
Ly8gb25jZSAtIG9uIHRoZSBtYWluIFVJIHRocmVhZC4KKyAgICAgICAgaWYgKCFjdXJyZW50VGhy
ZWFkSXNXZWJUaHJlYWQpCisgICAgICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVEZXN0
cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisjZWxzZQorICAgICAgICBkYXRh
Lm1fYXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CiAgICAgICAgIGRh
dGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6ZGVz
dHJveTsKLQotICAgICAgICByZXR1cm4gdGFibGU7CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQor
ICAgICAgICByZXR1cm4gZGF0YS5tX2F0b21pY1N0cmluZ1RhYmxlOwogICAgIH0KIAogICAgIEhh
c2hTZXQ8U3RyaW5nSW1wbCo+JiB0YWJsZSgpCkBAIC03MCwxNSArMTA2LDIwIEBAIHByaXZhdGU6
CiBzdGF0aWMgaW5saW5lIEhhc2hTZXQ8U3RyaW5nSW1wbCo+JiBzdHJpbmdUYWJsZSgpCiB7CiAg
ICAgLy8gT25jZSBwb3NzaWJsZSB3ZSBzaG91bGQgbWFrZSB0aGlzIG5vbi1sYXp5IChjb25zdHJ1
Y3RlZCBpbiBXVEZUaHJlYWREYXRhJ3MgY29uc3RydWN0b3IpLgotICAgIEF0b21pY1N0cmluZ1Rh
YmxlKiB0YWJsZSA9IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpOworICAgIFdU
RlRocmVhZERhdGEmIGRhdGEgPSB3dGZUaHJlYWREYXRhKCk7CisgICAgQXRvbWljU3RyaW5nVGFi
bGUqIHRhYmxlID0gZGF0YS5hdG9taWNTdHJpbmdUYWJsZSgpOwogICAgIGlmIChVTkxJS0VMWSgh
dGFibGUpKQotICAgICAgICB0YWJsZSA9IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKTsKKyAg
ICAgICAgdGFibGUgPSBBdG9taWNTdHJpbmdUYWJsZTo6Y3JlYXRlKGRhdGEpOwogICAgIHJldHVy
biB0YWJsZS0+dGFibGUoKTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFz
aFRyYW5zbGF0b3I+CiBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gYWRkVG9T
dHJpbmdUYWJsZShjb25zdCBUJiB2YWx1ZSkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgQXRv
bWljU3RyaW5nVGFibGVMb2NrZXIgbG9ja2VyOworI2VuZGlmCisKICAgICBIYXNoU2V0PFN0cmlu
Z0ltcGwqPjo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IHN0cmluZ1RhYmxlKCkuYWRkPFQsIEhhc2hU
cmFuc2xhdG9yPih2YWx1ZSk7CiAKICAgICAvLyBJZiB0aGUgc3RyaW5nIGlzIG5ld2x5LXRyYW5z
bGF0ZWQsIHRoZW4gd2UgbmVlZCB0byBhZG9wdCBpdC4KQEAgLTM4Niw2ICs0MjcsOSBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IEF0b21pY1N0cmluZzo6YWRkU2xvd0Nhc2UoU3RyaW5nSW1wbCog
cikKICAgICBpZiAoIXItPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6ZW1w
dHkoKTsKIAorI2lmIFBMQVRGT1JNKElPUykKKyAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlciBs
b2NrZXI7CisjZW5kaWYKICAgICBTdHJpbmdJbXBsKiByZXN1bHQgPSAqc3RyaW5nVGFibGUoKS5h
ZGQocikuaXRlcmF0b3I7CiAgICAgaWYgKHJlc3VsdCA9PSByKQogICAgICAgICByLT5zZXRJc0F0
b21pYyh0cnVlKTsKQEAgLTQwNyw2ICs0NTEsOSBAQCBBdG9taWNTdHJpbmdJbXBsKiBBdG9taWNT
dHJpbmc6OmZpbmQoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nSW1wbCkKICAgICBpZiAoIXN0cmlu
Z0ltcGwtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWljU3RyaW5n
SW1wbCo+KFN0cmluZ0ltcGw6OmVtcHR5KCkpOwogCisjaWYgUExBVEZPUk0oSU9TKQorICAgIEF0
b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKKyNlbmRpZgogICAgIEhhc2hTZXQ8U3RyaW5n
SW1wbCo+OjppdGVyYXRvciBpdGVyYXRvcjsKICAgICBpZiAoc3RyaW5nSW1wbC0+aXM4Qml0KCkp
CiAgICAgICAgIGl0ZXJhdG9yID0gZmluZFN0cmluZzxMQ2hhcj4oc3RyaW5nSW1wbCk7CkBAIC00
MTksNiArNDY2LDkgQEAgQXRvbWljU3RyaW5nSW1wbCogQXRvbWljU3RyaW5nOjpmaW5kKGNvbnN0
IFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiAKIHZvaWQgQXRvbWljU3RyaW5nOjpyZW1vdmUoU3Ry
aW5nSW1wbCogcikKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgQXRvbWljU3RyaW5nVGFibGVM
b2NrZXIgbG9ja2VyOworI2VuZGlmCiAgICAgc3RyaW5nVGFibGUoKS5yZW1vdmUocik7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185340</attachid>
            <date>2013-01-29 16:39:09 -0800</date>
            <delta_ts>2013-02-04 14:22:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108139-20130129163555.patch</filename>
            <type>text/plain</type>
            <size>6623</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMzMmE3ZmYyOGU4ZjU3ZWJiZGE2N2Y1
ZGQ5N2QxY2YxNmRlNDU5MjYuLmFhZDNmMmNhMGM3YmM4ZmM1YTM5YWM3ZjAwODZlMjdjYmIzZTk3
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTMtMDEtMjkgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVwc3RyZWFtIGlPUydzIEF0b21pY1N0cmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4MTM5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gaU9T
LCBXZWJDb3JlIGNhbiBiZSBleGVjdXRlZCBmcm9tIHR3byBkaWZmZXJlbnQgdGhyZWFkcy4gVG8g
bWFpbnRhaW4gY29uc2lzdGVuY3ksCisgICAgICAgIGEgZmV3IGNoYW5nZXMgaGFkIGJlZW4gbWFk
ZToKKyAgICAgICAgLVRoZSBtYWluIFVJIHRocmVhZCBhbmQgdGhlIFdlYlRocmVhZCBzaGFyZSB0
aGUgc2FtZSBBdG9taWNTdHJpbmdUYWJsZS4KKyAgICAgICAgLUEgc3BpbiBsb2NrIGlzIG5lZWRl
ZCBiZWZvcmUgYW55IGFjY2VzcyB0byBwcmV2ZW50IGFueSBjb25jdXJyZW50IG1vZGlmaWNhdGlv
biBvZiB0aGUgc3RyaW5nIHRhYmxlLgorICAgICAgICAgVGhlIHNwaW4gbG9jayBhbHNvIHByZXZl
bnQgcmFjZSBvbiB0aGUgc3RhdGljIGluaXRpYWxpemF0aW9uIG9mIHRoZSBzaGFyZWQgdGFibGUu
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IFVT
RShXRUJfVEhSRUFEKSB0byBzY29wZSBjaGFuZ2VzIHJlbGF0ZWQgdG8gaU9TIFdlYiBUaHJlYWQu
CisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcDoKKyAgICAgICAgKEF0b21pY1N0
cmluZ1RhYmxlTG9ja2VyKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nVGFibGVMb2NrZXI6
OkF0b21pY1N0cmluZ1RhYmxlTG9ja2VyKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nVGFi
bGVMb2NrZXI6On5BdG9taWNTdHJpbmdUYWJsZUxvY2tlcik6CisgICAgICAgIChXVEY6OkF0b21p
Y1N0cmluZ1RhYmxlOjpjcmVhdGUpOgorICAgICAgICB3dGZUaHJlYWREYXRhKCkgaXMgbm90IG5l
Y2Vzc2FyaWx5IGlubGluZWQgb24gQVJNLiBXaGVuIGl0IGlzIG5vdCBpbmxpbmVkLCB0aGUgb2xk
IGNvZGUKKyAgICAgICAgY2F1c2VzIHR3byBjYWxsIHRvIHRoZSBmdW5jdGlvbi4gSW5zdGVhZCwg
d2UgY2FuIGtlZXAgdGhlIHZhbHVlIGluIHJlZ2lzdGVyIGFuZCBwYXNzIGl0CisgICAgICAgIHRv
IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoKS4KKyAgICAgICAgKFdURjo6c3RyaW5nVGFibGUp
OgorICAgICAgICAoV1RGOjphZGRUb1N0cmluZ1RhYmxlKToKKyAgICAgICAgKFdURjo6QXRvbWlj
U3RyaW5nOjphZGRTbG93Q2FzZSk6CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6ZmluZCk6
CisgICAgICAgIChXVEY6OkF0b21pY1N0cmluZzo6cmVtb3ZlKToKKwogMjAxMy0wMS0yOCAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU3RyaW5nIGNv
bnN0cnVjdGVkIGZyb20gTGl0ZXJhbHMgc2hvdWxkIGJlIG5vbi1lbXB0eQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggYjJkODY1YTM4ZjY1OGQ3N2FlYzdhYmQ5MGViOWE5MTdmZTg3N2FhMS4uZjYxNTkwNTI4ZWEz
ODRkNWJiZThjNzVjZmZkNzg1NzZhNTVkYjdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC02MTcsNiArNjE3
LDcgQEAKICNkZWZpbmUgV1RGX1VTRV9DRk5FVFdPUksgMQogI2RlZmluZSBXVEZfVVNFX05FVFdP
UktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLIDEKICNkZWZpbmUgV1RGX1VTRV9QVEhSRUFEUyAxCisj
ZGVmaW5lIFdURl9VU0VfV0VCX1RIUkVBRCAxCiAKICNpZiBQTEFURk9STShJT1NfU0lNVUxBVE9S
KQogICAgICNkZWZpbmUgRU5BQkxFX0pJVCAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5j
cHAKaW5kZXggODczMmVhODRmY2ZlYWY2NjdlYjMwNGJhMGJmNjI0MDQ3YTNjMTIyNy4uYzM3ZWFm
MGM1N2I4ZjhlMjI5NDZhOTdmMDczYzkzMWNlODgxN2EzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRv
bWljU3RyaW5nLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBQYXRyaWNr
IEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0zMCwyNCArMzAsNjQgQEAKICNp
bmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VURjgu
aD4KIAorI2lmIFVTRShXRUJfVEhSRUFEKQorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Cisj
aW5jbHVkZSA8d3RmL1RDU3BpbkxvY2suaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV1RGIHsKIAog
dXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CiAKIENPTVBJTEVfQVNTRVJUKHNpemVvZihBdG9taWNT
dHJpbmcpID09IHNpemVvZihTdHJpbmcpLCBhdG9taWNfc3RyaW5nX2FuZF9zdHJpbmdfbXVzdF9i
ZV9zYW1lX3NpemUpOwogCisjaWYgVVNFKFdFQl9USFJFQUQpCitjbGFzcyBBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciA6IHB1YmxpYyBTcGluTG9ja0hvbGRlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQXRvbWljU3RyaW5nVGFibGVMb2NrZXIpOworCisgICAgc3RhdGljIFNwaW5Mb2NrIHNf
c3RyaW5nVGFibGVMb2NrOworcHVibGljOgorICAgIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyKCkK
KyAgICAgICAgOiBTcGluTG9ja0hvbGRlcigmc19zdHJpbmdUYWJsZUxvY2spCisgICAgeworICAg
IH0KK307CisKK1NwaW5Mb2NrIEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyOjpzX3N0cmluZ1RhYmxl
TG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOworI2Vsc2UKKworY2xhc3MgQXRvbWljU3RyaW5n
VGFibGVMb2NrZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEF0b21pY1N0cmluZ1RhYmxl
TG9ja2VyKTsKK3B1YmxpYzoKKyAgICBBdG9taWNTdHJpbmdUYWJsZUxvY2tlcigpIHsgfQorICAg
IH5BdG9taWNTdHJpbmdUYWJsZUxvY2tlcigpIHsgfQorfTsKKyNlbmRpZiAvLyBVU0UoV0VCX1RI
UkVBRCkKKwogY2xhc3MgQXRvbWljU3RyaW5nVGFibGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBBdG9taWNTdHJpbmdUYWJsZSogY3JlYXRlKCkK
KyAgICBzdGF0aWMgQXRvbWljU3RyaW5nVGFibGUqIGNyZWF0ZShXVEZUaHJlYWREYXRhJiBkYXRh
KQogICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5nVGFibGUqIHRhYmxlID0gbmV3IEF0b21pY1N0
cmluZ1RhYmxlOwotCi0gICAgICAgIFdURlRocmVhZERhdGEmIGRhdGEgPSB3dGZUaHJlYWREYXRh
KCk7Ci0gICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZSA9IHRhYmxlOworI2lmIFVTRShX
RUJfVEhSRUFEKQorICAgICAgICAvLyBPbiBpT1MsIG9uZSBBdG9taWNTdHJpbmdUYWJsZSBpcyBz
aGFyZWQgYmV0d2VlbiB0aGUgbWFpbiBVSSB0aHJlYWQgYW5kIHRoZSBXZWJUaHJlYWQuCisgICAg
ICAgIHN0YXRpYyBBdG9taWNTdHJpbmdUYWJsZSogc2hhcmVkU3RyaW5nVGFibGUgPSBuZXcgQXRv
bWljU3RyaW5nVGFibGU7CisKKyAgICAgICAgYm9vbCBjdXJyZW50VGhyZWFkSXNXZWJUaHJlYWQg
PSBpc1dlYlRocmVhZCgpOworICAgICAgICBpZiAoY3VycmVudFRocmVhZElzV2ViVGhyZWFkIHx8
IGlzVUlUaHJlYWQoKSkKKyAgICAgICAgICAgIGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZSA9IHNo
YXJlZFN0cmluZ1RhYmxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhLm1fYXRvbWlj
U3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CisKKyAgICAgICAgLy8gV2UgZG8g
dGhlIGZvbGxvd2luZyBzbyB0aGF0IGl0cyBkZXN0cnVjdGlvbiBoYXBwZW5zIG9ubHkKKyAgICAg
ICAgLy8gb25jZSAtIG9uIHRoZSBtYWluIFVJIHRocmVhZC4KKyAgICAgICAgaWYgKCFjdXJyZW50
VGhyZWFkSXNXZWJUaHJlYWQpCisgICAgICAgICAgICBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGVE
ZXN0cnVjdG9yID0gQXRvbWljU3RyaW5nVGFibGU6OmRlc3Ryb3k7CisjZWxzZQorICAgICAgICBk
YXRhLm1fYXRvbWljU3RyaW5nVGFibGUgPSBuZXcgQXRvbWljU3RyaW5nVGFibGU7CiAgICAgICAg
IGRhdGEubV9hdG9taWNTdHJpbmdUYWJsZURlc3RydWN0b3IgPSBBdG9taWNTdHJpbmdUYWJsZTo6
ZGVzdHJveTsKLQotICAgICAgICByZXR1cm4gdGFibGU7CisjZW5kaWYgLy8gVVNFKFdFQl9USFJF
QUQpCisgICAgICAgIHJldHVybiBkYXRhLm1fYXRvbWljU3RyaW5nVGFibGU7CiAgICAgfQogCiAg
ICAgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHRhYmxlKCkKQEAgLTcwLDE1ICsxMTAsMTggQEAgcHJp
dmF0ZToKIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmdJbXBsKj4mIHN0cmluZ1RhYmxlKCkK
IHsKICAgICAvLyBPbmNlIHBvc3NpYmxlIHdlIHNob3VsZCBtYWtlIHRoaXMgbm9uLWxhenkgKGNv
bnN0cnVjdGVkIGluIFdURlRocmVhZERhdGEncyBjb25zdHJ1Y3RvcikuCi0gICAgQXRvbWljU3Ry
aW5nVGFibGUqIHRhYmxlID0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCk7Cisg
ICAgV1RGVGhyZWFkRGF0YSYgZGF0YSA9IHd0ZlRocmVhZERhdGEoKTsKKyAgICBBdG9taWNTdHJp
bmdUYWJsZSogdGFibGUgPSBkYXRhLmF0b21pY1N0cmluZ1RhYmxlKCk7CiAgICAgaWYgKFVOTElL
RUxZKCF0YWJsZSkpCi0gICAgICAgIHRhYmxlID0gQXRvbWljU3RyaW5nVGFibGU6OmNyZWF0ZSgp
OworICAgICAgICB0YWJsZSA9IEF0b21pY1N0cmluZ1RhYmxlOjpjcmVhdGUoZGF0YSk7CiAgICAg
cmV0dXJuIHRhYmxlLT50YWJsZSgpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4KIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBh
ZGRUb1N0cmluZ1RhYmxlKGNvbnN0IFQmIHZhbHVlKQogeworICAgIEF0b21pY1N0cmluZ1RhYmxl
TG9ja2VyIGxvY2tlcjsKKwogICAgIEhhc2hTZXQ8U3RyaW5nSW1wbCo+OjpBZGRSZXN1bHQgYWRk
UmVzdWx0ID0gc3RyaW5nVGFibGUoKS5hZGQ8VCwgSGFzaFRyYW5zbGF0b3I+KHZhbHVlKTsKIAog
ICAgIC8vIElmIHRoZSBzdHJpbmcgaXMgbmV3bHktdHJhbnNsYXRlZCwgdGhlbiB3ZSBuZWVkIHRv
IGFkb3B0IGl0LgpAQCAtMzg2LDYgKzQyOSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gQXRv
bWljU3RyaW5nOjphZGRTbG93Q2FzZShTdHJpbmdJbXBsKiByKQogICAgIGlmICghci0+bGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOwogCisgICAgQXRvbWljU3Ry
aW5nVGFibGVMb2NrZXIgbG9ja2VyOwogICAgIFN0cmluZ0ltcGwqIHJlc3VsdCA9ICpzdHJpbmdU
YWJsZSgpLmFkZChyKS5pdGVyYXRvcjsKICAgICBpZiAocmVzdWx0ID09IHIpCiAgICAgICAgIHIt
PnNldElzQXRvbWljKHRydWUpOwpAQCAtNDA3LDYgKzQ1MSw3IEBAIEF0b21pY1N0cmluZ0ltcGwq
IEF0b21pY1N0cmluZzo6ZmluZChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsKQogICAgIGlm
ICghc3RyaW5nSW1wbC0+bGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBdG9t
aWNTdHJpbmdJbXBsKj4oU3RyaW5nSW1wbDo6ZW1wdHkoKSk7CiAKKyAgICBBdG9taWNTdHJpbmdU
YWJsZUxvY2tlciBsb2NrZXI7CiAgICAgSGFzaFNldDxTdHJpbmdJbXBsKj46Oml0ZXJhdG9yIGl0
ZXJhdG9yOwogICAgIGlmIChzdHJpbmdJbXBsLT5pczhCaXQoKSkKICAgICAgICAgaXRlcmF0b3Ig
PSBmaW5kU3RyaW5nPExDaGFyPihzdHJpbmdJbXBsKTsKQEAgLTQxOSw2ICs0NjQsNyBAQCBBdG9t
aWNTdHJpbmdJbXBsKiBBdG9taWNTdHJpbmc6OmZpbmQoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5n
SW1wbCkKIAogdm9pZCBBdG9taWNTdHJpbmc6OnJlbW92ZShTdHJpbmdJbXBsKiByKQogeworICAg
IEF0b21pY1N0cmluZ1RhYmxlTG9ja2VyIGxvY2tlcjsKICAgICBzdHJpbmdUYWJsZSgpLnJlbW92
ZShyKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>