<?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>95808</bug_id>
          
          <creation_ts>2012-09-04 18:21:42 -0700</creation_ts>
          <short_desc>[EFL] Remove &apos;+=&apos; usage in String</short_desc>
          <delta_ts>2012-09-05 10:05:23 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kangil Han">kangil.han</reporter>
          <assigned_to name="Kangil Han">kangil.han</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711635</commentid>
    <comment_count>0</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-04 18:21:42 -0700</bug_when>
    <thetext>As adam has proposed an efficient way of string append by using StringBuilder, I think EFL port should support it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711718</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-04 22:10:36 -0700</bug_when>
    <thetext>I was planning to work on this as well but it seems you were faster :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711757</commentid>
    <comment_count>2</comment_count>
      <attachid>162165</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-04 23:32:59 -0700</bug_when>
    <thetext>Created attachment 162165
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711766</commentid>
    <comment_count>3</comment_count>
      <attachid>162165</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-04 23:42:24 -0700</bug_when>
    <thetext>Comment on attachment 162165
patch

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

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1665
&gt; +            builder.clear();

Useless since build.isEmpty() was true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711768</commentid>
    <comment_count>4</comment_count>
      <attachid>162169</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-04 23:51:17 -0700</bug_when>
    <thetext>Created attachment 162169
patch

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711769</commentid>
    <comment_count>5</comment_count>
      <attachid>162170</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-04 23:52:08 -0700</bug_when>
    <thetext>Created attachment 162170
patch

Try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711770</commentid>
    <comment_count>6</comment_count>
      <attachid>162169</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-04 23:52:27 -0700</bug_when>
    <thetext>Comment on attachment 162169
patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711776</commentid>
    <comment_count>7</comment_count>
      <attachid>162170</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 00:05:18 -0700</bug_when>
    <thetext>Comment on attachment 162170
patch

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

Some comments about efficiency:

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1679
&gt; -    size_t sourceLength = strlen(source.utf8().data());
&gt; +    size_t sourceLength = strlen(builder.toString().utf8().data());
&gt;      *frameSource = static_cast&lt;char*&gt;(malloc(sourceLength + 1));
&gt;      if (!*frameSource) {
&gt;          CRITICAL(&quot;Could not allocate memory.&quot;);
&gt;          return -1;
&gt;      }
&gt;  
&gt; -    strncpy(*frameSource, source.utf8().data(), sourceLength);
&gt; +    strncpy(*frameSource, builder.toString().utf8().data(), sourceLength);
&gt;      (*frameSource)[sourceLength] = &apos;\0&apos;;

The previous code was fairly bad, that&apos;s an opportunity to fix the logic here.
Every time you create a CString, you are allocating new memory and copying the whole String.

What you should do is
CString utf8String = builder.toString().utf8().
then use the length and data from the CString. Avoid the strlen() here, it is a waste of time, especially for long strings.

&gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:377
&gt; +    StringBuilder builder;
&gt; +    builder.append(&quot;&lt;NSURLRequest URL &quot;);
&gt; +    builder.append(pathSuitableForTestResult(request-&gt;url).data());
&gt; +    builder.append(&quot;, main document URL &quot;);
&gt; +    builder.append(urlSuitableForTestResult(request-&gt;first_party).data());
&gt; +    builder.append(&quot;, http method &quot;);
&gt; +    builder.append(request-&gt;http_method ? String(request-&gt;http_method) : &quot;(none)&quot;);
&gt; +    builder.append(&quot;&gt;&quot;);
&gt; +    return builder.toString().utf8();

Here you should be using appendLiteral() for he strings literal.

&quot;&gt;&quot; -&gt; &apos;&gt;&apos;.

&gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:391
&gt; +    StringBuilder builder;
&gt; +    builder.append(&quot;&lt;NSURLResponse &quot;);
&gt; +    builder.append(pathSuitableForTestResult(response-&gt;url).data());
&gt; +    builder.append(&quot;, http status code &quot;);
&gt; +    builder.append(String::number(response-&gt;status_code));
&gt; +    builder.append(&quot;&gt;&quot;);
&gt; +    return builder.toString().utf8();

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711778</commentid>
    <comment_count>8</comment_count>
      <attachid>162170</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-09-05 00:09:51 -0700</bug_when>
    <thetext>Comment on attachment 162170
patch

Benjamin Thank you for your comment. Set r- again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711792</commentid>
    <comment_count>9</comment_count>
      <attachid>162170</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-09-05 00:31:28 -0700</bug_when>
    <thetext>Comment on attachment 162170
patch

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

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1662
&gt;      // Try to get &lt;head&gt; and &lt;body&gt; tags if &lt;html&gt; tag was not found.

Does this happen? Doesn&apos;t webkit insert that automatically, if missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711801</commentid>
    <comment_count>10</comment_count>
      <attachid>162170</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-09-05 00:49:04 -0700</bug_when>
    <thetext>Comment on attachment 162170
patch

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

&gt;&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1662
&gt;&gt;      // Try to get &lt;head&gt; and &lt;body&gt; tags if &lt;html&gt; tag was not found.
&gt; 
&gt; Does this happen? Doesn&apos;t webkit insert that automatically, if missing?

You&apos;re right, tags &lt;head&gt;, &lt;body&gt; will be inserted automatically. The above loop looks for the node that contains &lt;html&gt; tag. If we find that node, it will contains all nodes (including &lt;body&gt; , &lt;head&gt;).
This part you are asking is responsible for dumping pages without the &lt;html&gt; tag (I am not sure if WebKit adds it automatically) like java scripts source included in &lt;head&gt; etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711807</commentid>
    <comment_count>11</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 00:53:13 -0700</bug_when>
    <thetext>&gt; &gt; Does this happen? Doesn&apos;t webkit insert that automatically, if missing?

Please, in any case, update this separately.

Let&apos;s fix the strings first so we can move forward improving WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711814</commentid>
    <comment_count>12</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 00:56:35 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; &gt; Does this happen? Doesn&apos;t webkit insert that automatically, if missing?
&gt; 
&gt; Please, in any case, update this separately.
&gt; 
&gt; Let&apos;s fix the strings first so we can move forward improving WTF.

Okay, I will create a separate bug for that. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711815</commentid>
    <comment_count>13</comment_count>
      <attachid>162180</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 00:57:36 -0700</bug_when>
    <thetext>Created attachment 162180
patch

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711822</commentid>
    <comment_count>14</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 01:07:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 162170 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162170&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1662
&gt; &gt;      // Try to get &lt;head&gt; and &lt;body&gt; tags if &lt;html&gt; tag was not found.
&gt; 
&gt; Does this happen? Doesn&apos;t webkit insert that automatically, if missing?

Kenneth is right. WebKit automatically insert &apos;&lt;html&gt;&apos; and &apos;&lt;/html&gt;&apos; tags.
I will soon get back with new patch. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711824</commentid>
    <comment_count>15</comment_count>
      <attachid>162180</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-05 01:08:44 -0700</bug_when>
    <thetext>Comment on attachment 162180
patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711828</commentid>
    <comment_count>16</comment_count>
      <attachid>162180</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-05 01:18:12 -0700</bug_when>
    <thetext>Comment on attachment 162180
patch

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

Globally, the patch looks good.
The new/delete/malloc/free is a big issue. I let you clear that out for landing.

&gt; Source/WebKit/efl/ewk/ewk_frame.cpp:1679
&gt; -    size_t sourceLength = strlen(source.utf8().data());
&gt; -    *frameSource = static_cast&lt;char*&gt;(malloc(sourceLength + 1));
&gt; +    CString utf8String = builder.toString().utf8();
&gt; +    size_t sourceLength = utf8String.length();
&gt; +    *frameSource = new char[sourceLength + 1];
&gt;      if (!*frameSource) {
&gt;          CRITICAL(&quot;Could not allocate memory.&quot;);
&gt;          return -1;
&gt;      }
&gt;  
&gt; -    strncpy(*frameSource, source.utf8().data(), sourceLength);
&gt; +    strncpy(*frameSource, utf8String.data(), sourceLength);

Much nicer!

I would not change malloc&lt;-&gt;new without knowing how the memory is later freed.
The operator new can be overloaded/replaced. If some code use one allocator to allocate the memory, and an other allocator to free the memory, you are gonna be in trouble.

If the client code of ewk_frame_source_get() uses free(), you should use malloc here.

&gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:375
&gt; +    builder.append(request-&gt;http_method ? String(request-&gt;http_method) : &quot;(none)&quot;);

Ideally, this would be: 
if (request-&gt;http_method)
    builder.append(String(request-&gt;http_method));
else
    builder.appendLiteral(&quot;(none)&quot;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711910</commentid>
    <comment_count>17</comment_count>
      <attachid>162210</attachid>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 03:43:17 -0700</bug_when>
    <thetext>Created attachment 162210
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711913</commentid>
    <comment_count>18</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 03:47:53 -0700</bug_when>
    <thetext>&gt; I would not change malloc&lt;-&gt;new without knowing how the memory is later freed.
&gt; The operator new can be overloaded/replaced. If some code use one allocator to allocate the memory, and an other allocator to free the memory, you are gonna be in trouble.
&gt; 
&gt; If the client code of ewk_frame_source_get() uses free(), you should use malloc here.
&gt; 

Agreed since this WK1 API has been introduced for some while.
For compatibility, even though current coding style discourages to use of malloc/free, I would keep current implementation.

&gt; &gt; Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp:375
&gt; &gt; +    builder.append(request-&gt;http_method ? String(request-&gt;http_method) : &quot;(none)&quot;);
&gt; 
&gt; Ideally, this would be: 
&gt; if (request-&gt;http_method)
&gt;     builder.append(String(request-&gt;http_method));
&gt; else
&gt;     builder.appendLiteral(&quot;(none)&quot;);

Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711924</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-09-05 04:03:10 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; I would not change malloc&lt;-&gt;new without knowing how the memory is later freed.
&gt; &gt; The operator new can be overloaded/replaced. If some code use one allocator to allocate the memory, and an other allocator to free the memory, you are gonna be in trouble.
&gt; &gt; 
&gt; &gt; If the client code of ewk_frame_source_get() uses free(), you should use malloc here.
&gt; &gt; 
&gt; 
&gt; Agreed since this WK1 API has been introduced for some while.
&gt; For compatibility, even though current coding style discourages to use of malloc/free, I would keep current implementation.

This is a public C API so using &quot;new&quot; here would simply be wrong. The client can only call free() so you need to use malloc(). The EFL coding style discourages the use of malloc/free for *private* implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711932</commentid>
    <comment_count>20</comment_count>
    <who name="Kangil Han">kangil.han</who>
    <bug_when>2012-09-05 04:20:13 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; &gt; I would not change malloc&lt;-&gt;new without knowing how the memory is later freed.
&gt; &gt; &gt; The operator new can be overloaded/replaced. If some code use one allocator to allocate the memory, and an other allocator to free the memory, you are gonna be in trouble.
&gt; &gt; &gt; 
&gt; &gt; &gt; If the client code of ewk_frame_source_get() uses free(), you should use malloc here.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Agreed since this WK1 API has been introduced for some while.
&gt; &gt; For compatibility, even though current coding style discourages to use of malloc/free, I would keep current implementation.
&gt; 
&gt; This is a public C API so using &quot;new&quot; here would simply be wrong. The client can only call free() so you need to use malloc(). The EFL coding style discourages the use of malloc/free for *private* implementation.

Thanks for kind explanation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712172</commentid>
    <comment_count>21</comment_count>
      <attachid>162210</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 10:05:17 -0700</bug_when>
    <thetext>Comment on attachment 162210
patch

Clearing flags on attachment: 162210

Committed r127604: &lt;http://trac.webkit.org/changeset/127604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712173</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 10:05:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162165</attachid>
            <date>2012-09-04 23:32:59 -0700</date>
            <delta_ts>2012-09-04 23:52:08 -0700</delta_ts>
            <desc>patch</desc>
            <filename>use_string_builder.txt</filename>
            <type>text/plain</type>
            <size>5823</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlLi41OWYyMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB1c2Ug
b2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCgpIGluIG9y
ZGVyIHRvIGFkb3B0IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KKworICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgorCiAy
MDEyLTA5LTA0ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gQ29udGV4dCBtZW51IHJlc3RvcmUuIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YjMzYzYyLi5jYTMxNjM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcApAQCAtMTYzOCw3ICsxNjM4LDcgQEAgc3NpemVfdCBld2tfZnJhbWVf
c291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJj
ZSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+
ZG9jdW1lbnQoKSwgLTEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmcmFt
ZVNvdXJjZSwgLTEpOwogCi0gICAgV1RGOjpTdHJpbmcgc291cmNlOworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICAqZnJhbWVTb3VyY2UgPSAwOyAvLyBTYXZlcyAwIHRvIHBvaW50ZXIg
dW50aWwgaXQncyBub3QgYWxsb2NhdGVkLgogCiAgICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CkBAIC0xNjU0LDI4ICsxNjU0LDMwIEBAIHNz
aXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
aGFyKiogZnJhbWVTb3VyY2UpCiAgICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJD
b3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KG5v
ZGUpOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgPSBlbGVtZW50LT5vdXRlckhUTUwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZWxlbWVudC0+b3V0ZXJIVE1MKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAvLyBUcnkgdG8gZ2V0IDxoZWFkPiBhbmQg
PGJvZHk+IHRhZ3MgaWYgPGh0bWw+IHRhZyB3YXMgbm90IGZvdW5kLgotICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIGlmIChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5o
ZWFkKCkpCi0gICAgICAgICAgICBzb3VyY2UgPSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgp
LT5oZWFkKCktPm91dGVySFRNTCgpOworICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSkgeworICAg
ICAgICBpZiAoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVhZCgpKSB7CisgICAgICAg
ICAgICBidWlsZGVyLmNsZWFyKCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgpKTsKKyAgICAgICAgfQog
CiAgICAgICAgIGlmIChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5ib2R5KCkpCi0gICAg
ICAgICAgICBzb3VyY2UgKz0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keSgpLT5v
dXRlckhUTUwoKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNtYXJ0RGF0YS0+ZnJhbWUt
PmRvY3VtZW50KCktPmJvZHkoKS0+b3V0ZXJIVE1MKCkpOwogICAgIH0KIAotICAgIHNpemVfdCBz
b3VyY2VMZW5ndGggPSBzdHJsZW4oc291cmNlLnV0ZjgoKS5kYXRhKCkpOworICAgIHNpemVfdCBz
b3VyY2VMZW5ndGggPSBzdHJsZW4oYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICpmcmFtZVNvdXJjZSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2Moc291cmNlTGVuZ3Ro
ICsgMSkpOwogICAgIGlmICghKmZyYW1lU291cmNlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgbWVtb3J5LiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0g
ICAgc3RybmNweSgqZnJhbWVTb3VyY2UsIHNvdXJjZS51dGY4KCkuZGF0YSgpLCBzb3VyY2VMZW5n
dGgpOworICAgIHN0cm5jcHkoKmZyYW1lU291cmNlLCBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgc291cmNlTGVuZ3RoKTsKICAgICAoKmZyYW1lU291cmNlKVtzb3VyY2VMZW5ndGhd
ID0gJ1wwJzsKIAogICAgIHJldHVybiBzb3VyY2VMZW5ndGg7CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWQyNmZiNi4uMWZlOTlmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTA5LTA0ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXSBSZW1vdmUgJys9JyB1c2FnZSBpbiBTdHJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODA4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZWQgdXNlIG9mIFN0cmluZyBv
cGVyYXRvciAnKz0nIHdpdGggU3RyaW5nQnVpbGRlci5hcHBlbmQoKSBpbiBvcmRlciB0byBhZG9w
dCBlZmZpY2llbnQgU3RyaW5nIGNvbmNhdGVuYXRpb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwOgorICAgICAgICAoZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQpOgorCiAyMDEyLTA5LTA0ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgTlJXVCBsb2cgbW9yZSBvdXRwdXQg
d2hlbiBjcmFzaCBsb2dzIGFyZSBtaXNzaW5nCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcAppbmRleCBmMDVhYjQ1Li4xNGQ1YzZiIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgog
I2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTM2NSwxNSArMzY2LDE1IEBA
IHN0YXRpYyBDU3RyaW5nIHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlT
dHJpbmcpCiAKIHN0YXRpYyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
KEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFN0cmluZyByZXQg
PSAiPE5TVVJMUmVxdWVzdCBVUkwgIjsKLSAgICByZXQgKz0gcGF0aFN1aXRhYmxlRm9yVGVzdFJl
c3VsdChyZXF1ZXN0LT51cmwpLmRhdGEoKTsKLSAgICByZXQgKz0gIiwgbWFpbiBkb2N1bWVudCBV
UkwgIjsKLSAgICByZXQgKz0gdXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPmZpcnN0
X3BhcnR5KS5kYXRhKCk7Ci0gICAgcmV0ICs9ICIsIGh0dHAgbWV0aG9kICI7Ci0gICAgcmV0ICs9
IHJlcXVlc3QtPmh0dHBfbWV0aG9kID8gU3RyaW5nKHJlcXVlc3QtPmh0dHBfbWV0aG9kKSA6ICIo
bm9uZSkiOwotICAgIHJldCArPSAiPiI7Ci0KLSAgICByZXR1cm4gcmV0LnV0ZjgoKTsKKyAgICBT
dHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5hcHBlbmQoIjxOU1VSTFJlcXVlc3Qg
VVJMICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQocmVx
dWVzdC0+dXJsKS5kYXRhKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIsIG1haW4gZG9jdW1lbnQg
VVJMICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHVybFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1
ZXN0LT5maXJzdF9wYXJ0eSkuZGF0YSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiLCBodHRwIG1l
dGhvZCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChyZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmlu
ZyhyZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5vbmUpIik7CisgICAgYnVpbGRlci5hcHBlbmQo
Ij4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAogc3RhdGlj
IENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgRXdrX0ZyYW1l
X1Jlc291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSkKQEAgLTM4MSwxMyArMzgyLDEzIEBAIHN0YXRp
YyBDU3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19GcmFt
ZV9SZXNvdXJjZV9SZXNwb25zCiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuIENT
dHJpbmcoIihudWxsKSIpOwogCi0gICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXNwb25zZSAiOwot
ICAgIHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEo
KTsKLSAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOwotICAgIHJldCArPSBTdHJpbmc6
Om51bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOwotICAgIHJldCArPSAiPiI7Ci0KLSAgICBy
ZXR1cm4gcmV0LnV0ZjgoKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRl
ci5hcHBlbmQoIjxOU1VSTFJlc3BvbnNlICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGhTdWl0
YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UtPnVybCkuZGF0YSgpKTsKKyAgICBidWlsZGVyLmFw
cGVuZCgiLCBodHRwIHN0YXR1cyBjb2RlICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKHJlc3BvbnNlLT5zdGF0dXNfY29kZSkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCI+Iik7
CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKS51dGY4KCk7CiB9CiAKIHN0YXRpYyBDU3Ry
aW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFtZV9Mb2FkX0Vycm9y
KiBlcnJvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162169</attachid>
            <date>2012-09-04 23:51:17 -0700</date>
            <delta_ts>2012-09-05 00:57:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>use_string_builder_2.txt</filename>
            <type>text/plain</type>
            <size>5729</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlLi41OWYyMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB1c2Ug
b2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCgpIGluIG9y
ZGVyIHRvIGFkb3B0IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KKworICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgorCiAy
MDEyLTA5LTA0ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gQ29udGV4dCBtZW51IHJlc3RvcmUuIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YjMzYzYyLi4xMmZlYjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcApAQCAtMTYzOCw3ICsxNjM4LDcgQEAgc3NpemVfdCBld2tfZnJhbWVf
c291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJj
ZSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+
ZG9jdW1lbnQoKSwgLTEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmcmFt
ZVNvdXJjZSwgLTEpOwogCi0gICAgV1RGOjpTdHJpbmcgc291cmNlOworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICAqZnJhbWVTb3VyY2UgPSAwOyAvLyBTYXZlcyAwIHRvIHBvaW50ZXIg
dW50aWwgaXQncyBub3QgYWxsb2NhdGVkLgogCiAgICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CkBAIC0xNjU0LDI4ICsxNjU0LDI4IEBAIHNz
aXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
aGFyKiogZnJhbWVTb3VyY2UpCiAgICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJD
b3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KG5v
ZGUpOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgPSBlbGVtZW50LT5vdXRlckhUTUwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZWxlbWVudC0+b3V0ZXJIVE1MKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAvLyBUcnkgdG8gZ2V0IDxoZWFkPiBhbmQg
PGJvZHk+IHRhZ3MgaWYgPGh0bWw+IHRhZyB3YXMgbm90IGZvdW5kLgotICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKSB7CisgICAgaWYgKGJ1aWxkZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChz
bWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCkpCi0gICAgICAgICAgICBzb3VyY2Ug
PSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVh
ZCgpLT5vdXRlckhUTUwoKSk7CiAKICAgICAgICAgaWYgKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3Vt
ZW50KCktPmJvZHkoKSkKLSAgICAgICAgICAgIHNvdXJjZSArPSBzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5ib2R5KCktPm91dGVySFRNTCgpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keSgpLT5vdXRlckhUTUwoKSk7CiAg
ICAgfQogCi0gICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IHN0cmxlbihzb3VyY2UudXRmOCgpLmRh
dGEoKSk7CisgICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IHN0cmxlbihidWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgKmZyYW1lU291cmNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1hbGxvYyhzb3VyY2VMZW5ndGggKyAxKSk7CiAgICAgaWYgKCEqZnJhbWVTb3VyY2UpIHsKICAg
ICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkuIik7CiAgICAgICAgIHJl
dHVybiAtMTsKICAgICB9CiAKLSAgICBzdHJuY3B5KCpmcmFtZVNvdXJjZSwgc291cmNlLnV0Zjgo
KS5kYXRhKCksIHNvdXJjZUxlbmd0aCk7CisgICAgc3RybmNweSgqZnJhbWVTb3VyY2UsIGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzb3VyY2VMZW5ndGgpOwogICAgICgqZnJhbWVT
b3VyY2UpW3NvdXJjZUxlbmd0aF0gPSAnXDAnOwogCiAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZDI2
ZmI2Li4xZmU5OWYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwu
aGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlZCB1c2Ugb2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVu
ZCgpIGluIG9yZGVyIHRvIGFkb3B0IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHA6Cisg
ICAgICAgIChkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisKIDIwMTItMDktMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBO
UldUIGxvZyBtb3JlIG91dHB1dCB3aGVuIGNyYXNoIGxvZ3MgYXJlIG1pc3NpbmcKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IGYw
NWFiNDUuLjE0ZDVjNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPEV2YXMuaD4K
ICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtMzY1LDE1ICszNjYsMTUgQEAgc3RhdGljIENTdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIAogc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXF1ZXN0IFVSTCAiOwotICAgIHJldCArPSBw
YXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPnVybCkuZGF0YSgpOwotICAgIHJldCAr
PSAiLCBtYWluIGRvY3VtZW50IFVSTCAiOwotICAgIHJldCArPSB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQocmVxdWVzdC0+Zmlyc3RfcGFydHkpLmRhdGEoKTsKLSAgICByZXQgKz0gIiwgaHR0cCBt
ZXRob2QgIjsKLSAgICByZXQgKz0gcmVxdWVzdC0+aHR0cF9tZXRob2QgPyBTdHJpbmcocmVxdWVz
dC0+aHR0cF9tZXRob2QpIDogIihub25lKSI7Ci0gICAgcmV0ICs9ICI+IjsKLQotICAgIHJldHVy
biByZXQudXRmOCgpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZCgiPE5TVVJMUmVxdWVzdCBVUkwgIik7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aFN1aXRh
YmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpLmRhdGEoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7CisgICAgYnVpbGRlci5hcHBlbmQodXJsU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPmZpcnN0X3BhcnR5KS5kYXRhKCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCIsIGh0dHAgbWV0aG9kICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHJlcXVlc3Qt
Pmh0dHBfbWV0aG9kID8gU3RyaW5nKHJlcXVlc3QtPmh0dHBfbWV0aG9kKSA6ICIobm9uZSkiKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiPiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQpAQCAtMzgx
LDEzICszODIsMTMgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnMKICAgICBpZiAoIXJlc3BvbnNl
KQogICAgICAgICByZXR1cm4gQ1N0cmluZygiKG51bGwpIik7CiAKLSAgICBTdHJpbmcgcmV0ID0g
IjxOU1VSTFJlc3BvbnNlICI7Ci0gICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVzcG9uc2UtPnVybCkuZGF0YSgpOwotICAgIHJldCArPSAiLCBodHRwIHN0YXR1cyBjb2RlICI7
Ci0gICAgcmV0ICs9IFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLT5zdGF0dXNfY29kZSk7Ci0gICAg
cmV0ICs9ICI+IjsKLQotICAgIHJldHVybiByZXQudXRmOCgpOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIik7CisgICAgYnVp
bGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZS0+dXJsKS5kYXRh
KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7CisgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIocmVzcG9uc2UtPnN0YXR1c19jb2RlKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoIj4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKIH0KIAogc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162170</attachid>
            <date>2012-09-04 23:52:08 -0700</date>
            <delta_ts>2012-09-05 00:57:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>use_string_builder_2.txt</filename>
            <type>text/plain</type>
            <size>5729</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlLi41OWYyMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB1c2Ug
b2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCgpIGluIG9y
ZGVyIHRvIGFkb3B0IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KKworICAgICAgICAq
IGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgorCiAy
MDEyLTA5LTA0ICBNaWNoYcWCIFBha3XFgmEgdmVsIFJ1dGthICA8bS5wYWt1bGFAc2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0VGTF0gQ29udGV4dCBtZW51IHJlc3RvcmUuIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcAppbmRleCA0YjMzYzYyLi4xMmZlYjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcApAQCAtMTYzOCw3ICsxNjM4LDcgQEAgc3NpemVfdCBld2tfZnJhbWVf
c291cmNlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJj
ZSkKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+
ZG9jdW1lbnQoKSwgLTEpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChmcmFt
ZVNvdXJjZSwgLTEpOwogCi0gICAgV1RGOjpTdHJpbmcgc291cmNlOworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKICAgICAqZnJhbWVTb3VyY2UgPSAwOyAvLyBTYXZlcyAwIHRvIHBvaW50ZXIg
dW50aWwgaXQncyBub3QgYWxsb2NhdGVkLgogCiAgICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7CkBAIC0xNjU0LDI4ICsxNjU0LDI4IEBAIHNz
aXplX3QgZXdrX2ZyYW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBj
aGFyKiogZnJhbWVTb3VyY2UpCiAgICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShXZWJD
b3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7CiAgICAgICAgICAgICAgICAgV2ViQ29yZTo6SFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1MRWxlbWVudCo+KG5v
ZGUpOwogICAgICAgICAgICAgICAgIGlmIChlbGVtZW50KQotICAgICAgICAgICAgICAgICAgICBz
b3VyY2UgPSBlbGVtZW50LT5vdXRlckhUTUwoKTsKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoZWxlbWVudC0+b3V0ZXJIVE1MKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAvLyBUcnkgdG8gZ2V0IDxoZWFkPiBhbmQg
PGJvZHk+IHRhZ3MgaWYgPGh0bWw+IHRhZyB3YXMgbm90IGZvdW5kLgotICAgIGlmIChzb3VyY2Uu
aXNFbXB0eSgpKSB7CisgICAgaWYgKGJ1aWxkZXIuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChz
bWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCkpCi0gICAgICAgICAgICBzb3VyY2Ug
PSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVh
ZCgpLT5vdXRlckhUTUwoKSk7CiAKICAgICAgICAgaWYgKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3Vt
ZW50KCktPmJvZHkoKSkKLSAgICAgICAgICAgIHNvdXJjZSArPSBzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5ib2R5KCktPm91dGVySFRNTCgpOworICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keSgpLT5vdXRlckhUTUwoKSk7CiAg
ICAgfQogCi0gICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IHN0cmxlbihzb3VyY2UudXRmOCgpLmRh
dGEoKSk7CisgICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IHN0cmxlbihidWlsZGVyLnRvU3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAgICAgKmZyYW1lU291cmNlID0gc3RhdGljX2Nhc3Q8Y2hhcio+
KG1hbGxvYyhzb3VyY2VMZW5ndGggKyAxKSk7CiAgICAgaWYgKCEqZnJhbWVTb3VyY2UpIHsKICAg
ICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkuIik7CiAgICAgICAgIHJl
dHVybiAtMTsKICAgICB9CiAKLSAgICBzdHJuY3B5KCpmcmFtZVNvdXJjZSwgc291cmNlLnV0Zjgo
KS5kYXRhKCksIHNvdXJjZUxlbmd0aCk7CisgICAgc3RybmNweSgqZnJhbWVTb3VyY2UsIGJ1aWxk
ZXIudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBzb3VyY2VMZW5ndGgpOwogICAgICgqZnJhbWVT
b3VyY2UpW3NvdXJjZUxlbmd0aF0gPSAnXDAnOwogCiAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1ZDI2
ZmI2Li4xZmU5OWYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwu
aGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0
cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4
MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBs
YWNlZCB1c2Ugb2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVu
ZCgpIGluIG9yZGVyIHRvIGFkb3B0IGVmZmljaWVudCBTdHJpbmcgY29uY2F0ZW5hdGlvbi4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHA6Cisg
ICAgICAgIChkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisKIDIwMTItMDktMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBO
UldUIGxvZyBtb3JlIG91dHB1dCB3aGVuIGNyYXNoIGxvZ3MgYXJlIG1pc3NpbmcKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCmluZGV4IGYw
NWFiNDUuLjE0ZDVjNmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1w
UmVuZGVyVHJlZUNocm9tZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBS
ZW5kZXJUcmVlQ2hyb21lLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgPEV2YXMuaD4K
ICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtMzY1LDE1ICszNjYsMTUgQEAgc3RhdGljIENTdHJpbmcgdXJsU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIAogc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1lX1Jlc291cmNlX1JlcXVlc3QqIHJlcXVlc3Qp
CiB7Ci0gICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXF1ZXN0IFVSTCAiOwotICAgIHJldCArPSBw
YXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPnVybCkuZGF0YSgpOwotICAgIHJldCAr
PSAiLCBtYWluIGRvY3VtZW50IFVSTCAiOwotICAgIHJldCArPSB1cmxTdWl0YWJsZUZvclRlc3RS
ZXN1bHQocmVxdWVzdC0+Zmlyc3RfcGFydHkpLmRhdGEoKTsKLSAgICByZXQgKz0gIiwgaHR0cCBt
ZXRob2QgIjsKLSAgICByZXQgKz0gcmVxdWVzdC0+aHR0cF9tZXRob2QgPyBTdHJpbmcocmVxdWVz
dC0+aHR0cF9tZXRob2QpIDogIihub25lKSI7Ci0gICAgcmV0ICs9ICI+IjsKLQotICAgIHJldHVy
biByZXQudXRmOCgpOworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFw
cGVuZCgiPE5TVVJMUmVxdWVzdCBVUkwgIik7CisgICAgYnVpbGRlci5hcHBlbmQocGF0aFN1aXRh
YmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpLmRhdGEoKSk7CisgICAgYnVpbGRlci5hcHBl
bmQoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7CisgICAgYnVpbGRlci5hcHBlbmQodXJsU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPmZpcnN0X3BhcnR5KS5kYXRhKCkpOworICAgIGJ1aWxk
ZXIuYXBwZW5kKCIsIGh0dHAgbWV0aG9kICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHJlcXVlc3Qt
Pmh0dHBfbWV0aG9kID8gU3RyaW5nKHJlcXVlc3QtPmh0dHBfbWV0aG9kKSA6ICIobm9uZSkiKTsK
KyAgICBidWlsZGVyLmFwcGVuZCgiPiIpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCku
dXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJl
c3VsdChjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJlc3BvbnNlKQpAQCAtMzgx
LDEzICszODIsMTMgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnMKICAgICBpZiAoIXJlc3BvbnNl
KQogICAgICAgICByZXR1cm4gQ1N0cmluZygiKG51bGwpIik7CiAKLSAgICBTdHJpbmcgcmV0ID0g
IjxOU1VSTFJlc3BvbnNlICI7Ci0gICAgcmV0ICs9IHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVzcG9uc2UtPnVybCkuZGF0YSgpOwotICAgIHJldCArPSAiLCBodHRwIHN0YXR1cyBjb2RlICI7
Ci0gICAgcmV0ICs9IFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLT5zdGF0dXNfY29kZSk7Ci0gICAg
cmV0ICs9ICI+IjsKLQotICAgIHJldHVybiByZXQudXRmOCgpOworICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZCgiPE5TVVJMUmVzcG9uc2UgIik7CisgICAgYnVp
bGRlci5hcHBlbmQocGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXNwb25zZS0+dXJsKS5kYXRh
KCkpOworICAgIGJ1aWxkZXIuYXBwZW5kKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7CisgICAgYnVp
bGRlci5hcHBlbmQoU3RyaW5nOjpudW1iZXIocmVzcG9uc2UtPnN0YXR1c19jb2RlKSk7CisgICAg
YnVpbGRlci5hcHBlbmQoIj4iKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0Zjgo
KTsKIH0KIAogc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
RXdrX0ZyYW1lX0xvYWRfRXJyb3IqIGVycm9yKQo=
</data>
<flag name="review"
          id="173192"
          type_id="1"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162180</attachid>
            <date>2012-09-05 00:57:36 -0700</date>
            <delta_ts>2012-09-05 03:43:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>use_string_builder_3.txt</filename>
            <type>text/plain</type>
            <size>5891</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlLi5iMTYyZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB1c2Ug
b2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCooKSBpbiBv
cmRlciB0byBhZG9wdCBlZmZpY2llbnQgU3RyaW5nIGNvbmNhdGVuYXRpb24uCisKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBzdHJsZW4gdXNhZ2UuIFJlcGxhY2VkIG1hbGxvYyB3aXRoIG5ldy4K
KwogMjAxMi0wOS0wNCAgTWljaGHFgiBQYWt1xYJhIHZlbCBSdXRrYSAgPG0ucGFrdWxhQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdIENvbnRleHQgbWVudSByZXN0b3JlLiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKaW5kZXggNGIzM2M2Mi4uNTA4ZDMxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHNzaXplX3QgZXdrX2Zy
YW1lX3NvdXJjZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjaGFyKiogZnJhbWVT
b3VyY2UpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJh
bWUtPmRvY3VtZW50KCksIC0xKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwo
ZnJhbWVTb3VyY2UsIC0xKTsKIAotICAgIFdURjo6U3RyaW5nIHNvdXJjZTsKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CiAgICAgKmZyYW1lU291cmNlID0gMDsgLy8gU2F2ZXMgMCB0byBwb2lu
dGVyIHVudGlsIGl0J3Mgbm90IGFsbG9jYXRlZC4KIAogICAgIGlmICghc21hcnREYXRhLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewpAQCAtMTY1NCwyOCArMTY1NCwyOSBA
QCBzc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFt
ZSwgY2hhcioqIGZyYW1lU291cmNlKQogICAgICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUo
V2ViQ29yZTo6SFRNTE5hbWVzOjpodG1sVGFnKSkgewogICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTEVsZW1lbnQq
Pihub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgICAgICAgICAg
ICAgc291cmNlID0gZWxlbWVudC0+b3V0ZXJIVE1MKCk7CisgICAgICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGVsZW1lbnQtPm91dGVySFRNTCgpKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgLy8gVHJ5IHRvIGdldCA8aGVhZD4g
YW5kIDxib2R5PiB0YWdzIGlmIDxodG1sPiB0YWcgd2FzIG5vdCBmb3VuZC4KLSAgICBpZiAoc291
cmNlLmlzRW1wdHkoKSkgeworICAgIGlmIChidWlsZGVyLmlzRW1wdHkoKSkgewogICAgICAgICBp
ZiAoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVhZCgpKQotICAgICAgICAgICAgc291
cmNlID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aGVhZCgpLT5vdXRlckhUTUwoKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkt
PmhlYWQoKS0+b3V0ZXJIVE1MKCkpOwogCiAgICAgICAgIGlmIChzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5ib2R5KCkpCi0gICAgICAgICAgICBzb3VyY2UgKz0gc21hcnREYXRhLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+Ym9keSgpLT5vdXRlckhUTUwoKTsKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmJvZHkoKS0+b3V0ZXJIVE1MKCkp
OwogICAgIH0KIAotICAgIHNpemVfdCBzb3VyY2VMZW5ndGggPSBzdHJsZW4oc291cmNlLnV0Zjgo
KS5kYXRhKCkpOwotICAgICpmcmFtZVNvdXJjZSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2Mo
c291cmNlTGVuZ3RoICsgMSkpOworICAgIENTdHJpbmcgdXRmOFN0cmluZyA9IGJ1aWxkZXIudG9T
dHJpbmcoKS51dGY4KCk7CisgICAgc2l6ZV90IHNvdXJjZUxlbmd0aCA9IHV0ZjhTdHJpbmcubGVu
Z3RoKCk7CisgICAgKmZyYW1lU291cmNlID0gbmV3IGNoYXJbc291cmNlTGVuZ3RoICsgMV07CiAg
ICAgaWYgKCEqZnJhbWVTb3VyY2UpIHsKICAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxv
Y2F0ZSBtZW1vcnkuIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBzdHJuY3B5
KCpmcmFtZVNvdXJjZSwgc291cmNlLnV0ZjgoKS5kYXRhKCksIHNvdXJjZUxlbmd0aCk7CisgICAg
c3RybmNweSgqZnJhbWVTb3VyY2UsIHV0ZjhTdHJpbmcuZGF0YSgpLCBzb3VyY2VMZW5ndGgpOwog
ICAgICgqZnJhbWVTb3VyY2UpW3NvdXJjZUxlbmd0aF0gPSAnXDAnOwogCiAgICAgcmV0dXJuIHNv
dXJjZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1ZDI2ZmI2Li5hNGJhM2NiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBI
YW4gIDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0n
IHVzYWdlIGluIFN0cmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTU4MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlZCB1c2Ugb2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdC
dWlsZGVyLmFwcGVuZCooKSBpbiBvcmRlciB0byBhZG9wdCBlZmZpY2llbnQgU3RyaW5nIGNvbmNh
dGVuYXRpb24uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwOgorICAgICAgICAoZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQpOgor
CiAyMDEyLTA5LTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEhhdmUgTlJXVCBsb2cgbW9yZSBvdXRwdXQgd2hlbiBjcmFzaCBsb2dzIGFyZSBtaXNz
aW5nCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVD
aHJvbWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21l
LmNwcAppbmRleCBmMDVhYjQ1Li45YmM2YTEwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNs
dWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTM2NSwxNSArMzY2LDE1IEBAIHN0YXRpYyBDU3RyaW5nIHVybFN1aXRh
YmxlRm9yVGVzdFJlc3VsdChjb25zdCBjaGFyKiB1cmlTdHJpbmcpCiAKIHN0YXRpYyBDU3RyaW5n
IGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KEV3a19GcmFtZV9SZXNvdXJjZV9SZXF1
ZXN0KiByZXF1ZXN0KQogewotICAgIFN0cmluZyByZXQgPSAiPE5TVVJMUmVxdWVzdCBVUkwgIjsK
LSAgICByZXQgKz0gcGF0aFN1aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpLmRhdGEo
KTsKLSAgICByZXQgKz0gIiwgbWFpbiBkb2N1bWVudCBVUkwgIjsKLSAgICByZXQgKz0gdXJsU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPmZpcnN0X3BhcnR5KS5kYXRhKCk7Ci0gICAgcmV0
ICs9ICIsIGh0dHAgbWV0aG9kICI7Ci0gICAgcmV0ICs9IHJlcXVlc3QtPmh0dHBfbWV0aG9kID8g
U3RyaW5nKHJlcXVlc3QtPmh0dHBfbWV0aG9kKSA6ICIobm9uZSkiOwotICAgIHJldCArPSAiPiI7
Ci0KLSAgICByZXR1cm4gcmV0LnV0ZjgoKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Cisg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCI8TlNVUkxSZXF1ZXN0IFVSTCAiKTsKKyAgICBidWls
ZGVyLmFwcGVuZChwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPnVybCkuZGF0YSgp
KTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwgbWFpbiBkb2N1bWVudCBVUkwgIik7Cisg
ICAgYnVpbGRlci5hcHBlbmQodXJsU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlcXVlc3QtPmZpcnN0
X3BhcnR5KS5kYXRhKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBodHRwIG1ldGhv
ZCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChyZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhy
ZXF1ZXN0LT5odHRwX21ldGhvZCkgOiAiKG5vbmUpIik7CisgICAgYnVpbGRlci5hcHBlbmQoJz4n
KTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAogc3RhdGljIENT
dHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgRXdrX0ZyYW1lX1Jl
c291cmNlX1Jlc3BvbnNlKiByZXNwb25zZSkKQEAgLTM4MSwxMyArMzgyLDEzIEBAIHN0YXRpYyBD
U3RyaW5nIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IEV3a19GcmFtZV9S
ZXNvdXJjZV9SZXNwb25zCiAgICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuIENTdHJp
bmcoIihudWxsKSIpOwogCi0gICAgU3RyaW5nIHJldCA9ICI8TlNVUkxSZXNwb25zZSAiOwotICAg
IHJldCArPSBwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKTsK
LSAgICByZXQgKz0gIiwgaHR0cCBzdGF0dXMgY29kZSAiOwotICAgIHJldCArPSBTdHJpbmc6Om51
bWJlcihyZXNwb25zZS0+c3RhdHVzX2NvZGUpOwotICAgIHJldCArPSAiPiI7Ci0KLSAgICByZXR1
cm4gcmV0LnV0ZjgoKTsKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCI8TlNVUkxSZXNwb25zZSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChwYXRo
U3VpdGFibGVGb3JUZXN0UmVzdWx0KHJlc3BvbnNlLT51cmwpLmRhdGEoKSk7CisgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCIsIGh0dHAgc3RhdHVzIGNvZGUgIik7CisgICAgYnVpbGRlci5hcHBl
bmQoU3RyaW5nOjpudW1iZXIocmVzcG9uc2UtPnN0YXR1c19jb2RlKSk7CisgICAgYnVpbGRlci5h
cHBlbmQoJz4nKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKTsKIH0KIAog
c3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoRXdrX0ZyYW1l
X0xvYWRfRXJyb3IqIGVycm9yKQo=
</data>
<flag name="review"
          id="173207"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="173211"
          type_id="3"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162210</attachid>
            <date>2012-09-05 03:43:17 -0700</date>
            <delta_ts>2012-09-05 10:05:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>use_string_builder_4.txt</filename>
            <type>text/plain</type>
            <size>5872</size>
            <attacher name="Kangil Han">kangil.han</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzNTQ0NzZlLi40YWM4YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMDktMDQgIEthbmdpbCBIYW4gIDxrYW5naWwuaGFuQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92ZSAnKz0nIHVzYWdlIGluIFN0cmluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU4MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCB1c2Ug
b2YgU3RyaW5nIG9wZXJhdG9yICcrPScgd2l0aCBTdHJpbmdCdWlsZGVyLmFwcGVuZCooKSBpbiBv
cmRlciB0byBhZG9wdCBlZmZpY2llbnQgU3RyaW5nIGNvbmNhdGVuYXRpb24uCisKKyAgICAgICAg
KiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KTogUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBzdHJsZW4gdXNhZ2UuCisKIDIwMTItMDktMDQgIE1pY2hhxYIgUGFr
dcWCYSB2ZWwgUnV0a2EgIDxtLnBha3VsYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBD
b250ZXh0IG1lbnUgcmVzdG9yZS4gCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4
IDRiMzNjNjIuLjY4ZjI2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC0x
NjM4LDcgKzE2MzgsNyBAQCBzc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNvbnN0IEV2YXNf
T2JqZWN0KiBld2tGcmFtZSwgY2hhcioqIGZyYW1lU291cmNlKQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLCAtMSk7CiAgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGZyYW1lU291cmNlLCAtMSk7CiAKLSAgICBX
VEY6OlN0cmluZyBzb3VyY2U7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICpmcmFt
ZVNvdXJjZSA9IDA7IC8vIFNhdmVzIDAgdG8gcG9pbnRlciB1bnRpbCBpdCdzIG5vdCBhbGxvY2F0
ZWQuCiAKICAgICBpZiAoIXNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmlzSFRNTERvY3Vt
ZW50KCkpIHsKQEAgLTE2NTQsMjggKzE2NTQsMjkgQEAgc3NpemVfdCBld2tfZnJhbWVfc291cmNl
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJjZSkKICAg
ICAgICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxOYW1lczo6aHRtbFRh
ZykpIHsKICAgICAgICAgICAgICAgICBXZWJDb3JlOjpIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQpCi0gICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGVsZW1lbnQtPm91dGVy
SFRNTCgpOworICAgICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChlbGVtZW50LT5vdXRl
ckhUTUwoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAogICAgIC8vIFRyeSB0byBnZXQgPGhlYWQ+IGFuZCA8Ym9keT4gdGFncyBpZiA8aHRtbD4g
dGFnIHdhcyBub3QgZm91bmQuCi0gICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
YnVpbGRlci5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3Vt
ZW50KCktPmhlYWQoKSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRv
Y3VtZW50KCktPmhlYWQoKS0+b3V0ZXJIVE1MKCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5oZWFkKCktPm91dGVySFRNTCgpKTsKIAog
ICAgICAgICBpZiAoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keSgpKQotICAgICAg
ICAgICAgc291cmNlICs9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmJvZHkoKS0+b3V0
ZXJIVE1MKCk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5ib2R5KCktPm91dGVySFRNTCgpKTsKICAgICB9CiAKLSAgICBzaXplX3Qgc291
cmNlTGVuZ3RoID0gc3RybGVuKHNvdXJjZS51dGY4KCkuZGF0YSgpKTsKKyAgICBDU3RyaW5nIHV0
ZjhTdHJpbmcgPSBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOworICAgIHNpemVfdCBzb3VyY2VM
ZW5ndGggPSB1dGY4U3RyaW5nLmxlbmd0aCgpOwogICAgICpmcmFtZVNvdXJjZSA9IHN0YXRpY19j
YXN0PGNoYXIqPihtYWxsb2Moc291cmNlTGVuZ3RoICsgMSkpOwogICAgIGlmICghKmZyYW1lU291
cmNlKSB7CiAgICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5LiIpOwog
ICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgc3RybmNweSgqZnJhbWVTb3VyY2UsIHNv
dXJjZS51dGY4KCkuZGF0YSgpLCBzb3VyY2VMZW5ndGgpOworICAgIHN0cm5jcHkoKmZyYW1lU291
cmNlLCB1dGY4U3RyaW5nLmRhdGEoKSwgc291cmNlTGVuZ3RoKTsKICAgICAoKmZyYW1lU291cmNl
KVtzb3VyY2VMZW5ndGhdID0gJ1wwJzsKIAogICAgIHJldHVybiBzb3VyY2VMZW5ndGg7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWQyNmZiNi4u
YTRiYTNjYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA5LTA0ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBz
YW1zdW5nLmNvbT4KKworICAgICAgICBbRUZMXSBSZW1vdmUgJys9JyB1c2FnZSBpbiBTdHJpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1ODA4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZWQg
dXNlIG9mIFN0cmluZyBvcGVyYXRvciAnKz0nIHdpdGggU3RyaW5nQnVpbGRlci5hcHBlbmQqKCkg
aW4gb3JkZXIgdG8gYWRvcHQgZWZmaWNpZW50IFN0cmluZyBjb25jYXRlbmF0aW9uLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcDoKKyAgICAg
ICAgKGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKwogMjAxMi0wOS0wNCAgVGlt
IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBIYXZlIE5SV1Qg
bG9nIG1vcmUgb3V0cHV0IHdoZW4gY3Jhc2ggbG9ncyBhcmUgbWlzc2luZwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggZjA1YWI0
NS4uMGNmZjc5OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5k
ZXJUcmVlQ2hyb21lLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRl
clRyZWVDaHJvbWUuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPGNzdGRpbz4KICNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0z
NjUsMTUgKzM2NiwyMCBAQCBzdGF0aWMgQ1N0cmluZyB1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQo
Y29uc3QgY2hhciogdXJpU3RyaW5nKQogCiBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1aXRh
YmxlRm9yVGVzdFJlc3VsdChFd2tfRnJhbWVfUmVzb3VyY2VfUmVxdWVzdCogcmVxdWVzdCkKIHsK
LSAgICBTdHJpbmcgcmV0ID0gIjxOU1VSTFJlcXVlc3QgVVJMICI7Ci0gICAgcmV0ICs9IHBhdGhT
dWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVzdC0+dXJsKS5kYXRhKCk7Ci0gICAgcmV0ICs9ICIs
IG1haW4gZG9jdW1lbnQgVVJMICI7Ci0gICAgcmV0ICs9IHVybFN1aXRhYmxlRm9yVGVzdFJlc3Vs
dChyZXF1ZXN0LT5maXJzdF9wYXJ0eSkuZGF0YSgpOwotICAgIHJldCArPSAiLCBodHRwIG1ldGhv
ZCAiOwotICAgIHJldCArPSByZXF1ZXN0LT5odHRwX21ldGhvZCA/IFN0cmluZyhyZXF1ZXN0LT5o
dHRwX21ldGhvZCkgOiAiKG5vbmUpIjsKLSAgICByZXQgKz0gIj4iOworICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VSTFJlcXVlc3QgVVJM
ICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQocmVxdWVz
dC0+dXJsKS5kYXRhKCkpOworICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiLCBtYWluIGRvY3Vt
ZW50IFVSTCAiKTsKKyAgICBidWlsZGVyLmFwcGVuZCh1cmxTdWl0YWJsZUZvclRlc3RSZXN1bHQo
cmVxdWVzdC0+Zmlyc3RfcGFydHkpLmRhdGEoKSk7CisgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFs
KCIsIGh0dHAgbWV0aG9kICIpOwogCi0gICAgcmV0dXJuIHJldC51dGY4KCk7CisgICAgaWYgKHJl
cXVlc3QtPmh0dHBfbWV0aG9kKQorICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmcocmVxdWVz
dC0+aHR0cF9tZXRob2QpKTsKKyAgICBlbHNlCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiKG5vbmUpIik7CisKKyAgICBidWlsZGVyLmFwcGVuZCgnPicpOworICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBkZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBFd2tfRnJhbWVfUmVzb3VyY2VfUmVzcG9uc2UqIHJl
c3BvbnNlKQpAQCAtMzgxLDEzICszODcsMTMgQEAgc3RhdGljIENTdHJpbmcgZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgRXdrX0ZyYW1lX1Jlc291cmNlX1Jlc3BvbnMKICAg
ICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm4gQ1N0cmluZygiKG51bGwpIik7CiAKLSAg
ICBTdHJpbmcgcmV0ID0gIjxOU1VSTFJlc3BvbnNlICI7Ci0gICAgcmV0ICs9IHBhdGhTdWl0YWJs
ZUZvclRlc3RSZXN1bHQocmVzcG9uc2UtPnVybCkuZGF0YSgpOwotICAgIHJldCArPSAiLCBodHRw
IHN0YXR1cyBjb2RlICI7Ci0gICAgcmV0ICs9IFN0cmluZzo6bnVtYmVyKHJlc3BvbnNlLT5zdGF0
dXNfY29kZSk7Ci0gICAgcmV0ICs9ICI+IjsKLQotICAgIHJldHVybiByZXQudXRmOCgpOworICAg
IFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIjxOU1VS
TFJlc3BvbnNlICIpOworICAgIGJ1aWxkZXIuYXBwZW5kKHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1
bHQocmVzcG9uc2UtPnVybCkuZGF0YSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiwg
aHR0cCBzdGF0dXMgY29kZSAiKTsKKyAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6Om51bWJlcihy
ZXNwb25zZS0+c3RhdHVzX2NvZGUpKTsKKyAgICBidWlsZGVyLmFwcGVuZCgnPicpOworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCkudXRmOCgpOwogfQogCiBzdGF0aWMgQ1N0cmluZyBkZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChFd2tfRnJhbWVfTG9hZF9FcnJvciogZXJyb3Ip
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>