<?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>33943</bug_id>
          
          <creation_ts>2010-01-21 02:44:40 -0800</creation_ts>
          <short_desc>Use fastStrDup instead of strdup</short_desc>
          <delta_ts>2010-02-08 10:22:14 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>33937</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kwang Yul Seo">skyul</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>183144</commentid>
    <comment_count>0</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-21 02:44:40 -0800</bug_when>
    <thetext>fastStrDup is added to FastMalloc in https://bugs.webkit.org/show_bug.cgi?id=33937

Replace strdup/free with fastStrDup/fastFree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183145</commentid>
    <comment_count>1</comment_count>
      <attachid>47107</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-21 02:55:14 -0800</bug_when>
    <thetext>Created attachment 47107
Use fastStrDup instead of strdup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183146</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-21 03:00:41 -0800</bug_when>
    <thetext>Attachment 47107 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/202872</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183147</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-21 03:00:51 -0800</bug_when>
    <thetext>Attachment 47107 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/203032</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183148</commentid>
    <comment_count>4</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-21 03:02:55 -0800</bug_when>
    <thetext>The following files still contain strdup after this patch.

 - bindings/v8/npruntime.cpp
 - bridge/npruntime.cpp
 - bindings/v8/V8NPUtils.cpp


NPN_UTF8FromIdentifier uses strdup to duplicate a string, so the returned memory must be freed with NPN_MemFree. As NPN_MemFree is implemented with free, strdup can&apos;t be replaced with fastStrDup.

Technically speaking, we can change NPN_MemAlloc/NPN_MemFree to use fastMalloc/fastFree internally and use fastStrDup in  NPN_UTF8FromIdentifier. However, some plugins use free instead of NPN_MemFree, replacing strdup with fastStrDup breaks those plugins.

NPN_ReleaseVariantValue has the same issue as NPN_UTF8FromIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183149</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-21 03:03:06 -0800</bug_when>
    <thetext>Attachment 47107 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/202876</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183150</commentid>
    <comment_count>6</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-21 03:07:10 -0800</bug_when>
    <thetext>Build tests won&apos;t pass until 33937 is committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183232</commentid>
    <comment_count>7</comment_count>
      <attachid>47107</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-21 10:01:15 -0800</bug_when>
    <thetext>Comment on attachment 47107
Use fastStrDup instead of strdup

&gt; Index: WebCore/bridge/jni/JNIBridge.cpp
&gt; ===================================================================
&gt; --- WebCore/bridge/jni/JNIBridge.cpp	(revision 53619)
&gt; +++ WebCore/bridge/jni/JNIBridge.cpp	(working copy)
&gt; @@ -301,7 +301,7 @@ JavaMethod::JavaMethod(JNIEnv* env, jobj
&gt;  JavaMethod::~JavaMethod()
&gt;  {
&gt;      if (m_signature)
&gt; -        free(m_signature);
&gt; +        fastFree(m_signature);
&gt;      delete[] m_parameters;
&gt;  };

We could change this to be an OwnPtr now. Also, there is never a need for a null check on a fastFree call.

&gt; @@ -311,7 +311,7 @@ static void appendClassName(StringBuilde
&gt;  {
&gt;      ASSERT(JSLock::lockCount() &gt; 0);
&gt;  
&gt; -    char* c = strdup(className);
&gt; +    char* c = fastStrDup(className);

Unfortunate for performance that this is always on the heap. It would be better if this used Vector&lt;char, 64&gt; or something like that.

&gt;  JavaArray::~JavaArray()
&gt;  {
&gt; -    free(const_cast&lt;char*&gt;(m_type));
&gt; +    fastFree(const_cast&lt;char*&gt;(m_type));
&gt;  }

We could change this to be an OwnPtr now.

&gt; @@ -409,7 +409,7 @@ void JavaArray::setValueAt(ExecState* ex
&gt;          // The type of the array will be something like:
&gt;          // &quot;[Ljava.lang.string;&quot;.  This is guaranteed, so no need
&gt;          // for extra sanity checks.
&gt; -        javaClassName = strdup(&amp;m_type[2]);
&gt; +        javaClassName = fastStrDup(&amp;m_type[2]);
&gt;          javaClassName[strchr(javaClassName, &apos;;&apos;)-javaClassName] = 0;
&gt;      }
&gt;      jvalue aJValue = convertValueToJValue(exec, aValue, arrayType, javaClassName);
&gt; @@ -472,7 +472,7 @@ void JavaArray::setValueAt(ExecState* ex
&gt;      }
&gt;  
&gt;      if (javaClassName)
&gt; -        free(const_cast&lt;char*&gt;(javaClassName));
&gt; +        fastFree(const_cast&lt;char*&gt;(javaClassName));
&gt;  }

We could change this to be an OwnPtr now.

&gt;  JavaClass::~JavaClass()
&gt;  {
&gt; -    free(const_cast&lt;char*&gt;(m_name));
&gt; +    fastFree(const_cast&lt;char*&gt;(m_name));

We could change this to be an OwnPtr now.

&gt; -    free(m_url);
&gt; +    fastFree(m_url);

We could change this to be an OwnPtr now.

&gt; Index: WebCore/platform/network/curl/ResourceHandleManager.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/network/curl/ResourceHandleManager.cpp	(revision 53619)
&gt; +++ WebCore/platform/network/curl/ResourceHandleManager.cpp	(working copy)
&gt; @@ -135,13 +135,13 @@ ResourceHandleManager::~ResourceHandleMa
&gt;      curl_multi_cleanup(m_curlMultiHandle);
&gt;      curl_share_cleanup(m_curlShareHandle);
&gt;      if (m_cookieJarFileName)
&gt; -        free(m_cookieJarFileName);
&gt; +        fastFree(m_cookieJarFileName);
&gt;      curl_global_cleanup();
&gt;  }

We could change this to be an OwnPtr now.

&gt;      // url is in ASCII so latin1() will only convert it to char* without character translation.
&gt; -    d-&gt;m_url = strdup(url.latin1().data());
&gt; +    d-&gt;m_url = fastStrDup(url.latin1().data());
&gt;      curl_easy_setopt(d-&gt;m_handle, CURLOPT_URL, d-&gt;m_url);

I don&apos;t see the change to the free call here. Is this introducing a mismatched malloc/free pair?

review- because the try bots say this breaks the build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183333</commentid>
    <comment_count>8</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-21 14:57:26 -0800</bug_when>
    <thetext>d-&gt;m_url is freed in ResourceHandleInternal::~ResourceHandleInternal, so there is no mismatched malloc/free pair. We could change this to be an OwnPtr too.

I will update the patch as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183506</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-21 23:17:38 -0800</bug_when>
    <thetext>All that stuff I said about OwnPtr is wrong. OwnPtr does a delete, not a free. So if we wanted to use a smart pointer we&apos;d either need to use a new one or use OwnArrayPtr and use something like strDup that did new char[] instead of fastMalloc. Oof. The strdup function isn&apos;t so great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183612</commentid>
    <comment_count>10</comment_count>
      <attachid>47194</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-22 05:47:53 -0800</bug_when>
    <thetext>Created attachment 47194
Use fastStrDup

fastStrDup is not so great as we can&apos;t use OwnPtr. However, it is still valuable because we can use fastFree everywhere. In addition to it, some compilers without strdup can benefit from fastStrDup.

I submit the patch again to make it pass build tests as 33943 is now committed in the trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183613</commentid>
    <comment_count>11</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-01-22 05:49:21 -0800</bug_when>
    <thetext>I will file a separate bug for using Vector&lt;char, 64&gt; to avoid a heap allocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183715</commentid>
    <comment_count>12</comment_count>
      <attachid>47194</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-22 11:19:01 -0800</bug_when>
    <thetext>Comment on attachment 47194
Use fastStrDup

Rejecting patch 47194 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/build-webkit&apos;, &apos;--debug&apos;]&quot; exit_code: 1
Last 500 characters of output:
C8Bindings10JavaMethod9signatureEv in JNIBridge.o
      __ZN3JSC8Bindings9JavaArrayC1EP8_jobjectPKcN3WTF10PassRefPtrINS0_10RootObjectEEE in JNIBridge.o
      __ZN3JSC8Bindings9JavaArrayC2EP8_jobjectPKcN3WTF10PassRefPtrINS0_10RootObjectEEE in JNIBridge.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
** BUILD FAILED **

The following build commands failed:
WebCore:
	Ld /Users/eseidel/Projects/CommitQueue/WebKitBuild/Debug/WebCore.framework/Versions/A/WebCore normal i386
(1 failure)


Full output: http://webkit-commit-queue.appspot.com/results/204912</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187124</commentid>
    <comment_count>13</comment_count>
      <attachid>47194</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-02 14:00:05 -0800</bug_when>
    <thetext>Comment on attachment 47194
Use fastStrDup

Looks like this would break the mac build.  r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187355</commentid>
    <comment_count>14</comment_count>
      <attachid>48030</attachid>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-02-03 07:39:16 -0800</bug_when>
    <thetext>Created attachment 48030
Patch

Update the patch. The build failed because WTF::fastStrDup is not exported. I filed a separate bug for this in https://bugs.webkit.org/show_bug.cgi?id=34526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188635</commentid>
    <comment_count>15</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-02-08 08:44:38 -0800</bug_when>
    <thetext>As bug 34526 is now landed, this needs to reviewed again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188675</commentid>
    <comment_count>16</comment_count>
      <attachid>48030</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-08 10:22:06 -0800</bug_when>
    <thetext>Comment on attachment 48030
Patch

Clearing flags on attachment: 48030

Committed r54495: &lt;http://trac.webkit.org/changeset/54495&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>188676</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-02-08 10:22:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47107</attachid>
            <date>2010-01-21 02:55:14 -0800</date>
            <delta_ts>2010-01-22 05:47:53 -0800</delta_ts>
            <desc>Use fastStrDup instead of strdup</desc>
            <filename>fastStrDup.patch</filename>
            <type>text/plain</type>
            <size>9078</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzYxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDEtMjEgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgZmFzdFN0ckR1cCBpbnN0ZWFkIG9mIHN0cmR1cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5NDMKKworICAgICAgICBSZXBsYWNlIHN0cmR1
cC9mcmVlIHdpdGggZmFzdFN0ckR1cC9mYXN0RnJlZS4KKworICAgICAgICAqIGJyaWRnZS9JZGVu
dGlmaWVyUmVwLmg6CisgICAgICAgIChXZWJDb3JlOjpJZGVudGlmaWVyUmVwOjpJZGVudGlmaWVy
UmVwKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHA6CisgICAgICAgIChKYXZh
TWV0aG9kOjp+SmF2YU1ldGhvZCk6CisgICAgICAgIChhcHBlbmRDbGFzc05hbWUpOgorICAgICAg
ICAoSmF2YU1ldGhvZDo6c2lnbmF0dXJlKToKKyAgICAgICAgKEphdmFBcnJheTo6SmF2YUFycmF5
KToKKyAgICAgICAgKEphdmFBcnJheTo6fkphdmFBcnJheSk6CisgICAgICAgIChKYXZhQXJyYXk6
OnNldFZhbHVlQXQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHA6
CisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6CisgICAgICAgIChKYXZhQ2xhc3M6On5K
YXZhQ2xhc3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJl
c291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGVNYW5hZ2VyOjp+UmVzb3VyY2VIYW5kbGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKToKKyAgICAgICAg
KiBwbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5TdHJl
YW06On5QbHVnaW5TdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFtOjpzdGFy
dFN0cmVhbSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnhzbHRQYXJhbUFycmF5RnJvbVBhcmFtZXRlck1hcCk6CisgICAgICAgIChX
ZWJDb3JlOjpmcmVlWHNsdFBhcmFtQXJyYXkpOgorCiAyMDEwLTAxLTIxICBTdGV2ZSBCbG9jayAg
PHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZp
bi4KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmgJKHJldmlzaW9uIDUzNjE5KQorKysgV2ViQ29y
ZS9icmlkZ2UvSWRlbnRpZmllclJlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IHByaXZhdGU6CiAgICAgSWRlbnRpZmllclJlcChjb25zdCBjaGFyKiBuYW1lKQogICAgICAgICA6
IG1faXNTdHJpbmcodHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fdmFsdWUubV9zdHJpbmcgPSBzdHJk
dXAobmFtZSk7CisgICAgICAgIG1fdmFsdWUubV9zdHJpbmcgPSBmYXN0U3RyRHVwKG5hbWUpOwog
ICAgIH0KICAgICAKICAgICB+SWRlbnRpZmllclJlcCgpCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9q
bmkvSk5JQnJpZGdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJp
ZGdlLmNwcAkocmV2aXNpb24gNTM2MTkpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvSk5JQnJpZGdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBAIEphdmFNZXRob2Q6OkphdmFN
ZXRob2QoSk5JRW52KiBlbnYsIGpvYmoKIEphdmFNZXRob2Q6On5KYXZhTWV0aG9kKCkKIHsKICAg
ICBpZiAobV9zaWduYXR1cmUpCi0gICAgICAgIGZyZWUobV9zaWduYXR1cmUpOworICAgICAgICBm
YXN0RnJlZShtX3NpZ25hdHVyZSk7CiAgICAgZGVsZXRlW10gbV9wYXJhbWV0ZXJzOwogfTsKIApA
QCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENsYXNzTmFtZShTdHJpbmdCdWls
ZGUKIHsKICAgICBBU1NFUlQoSlNMb2NrOjpsb2NrQ291bnQoKSA+IDApOwogCi0gICAgY2hhciog
YyA9IHN0cmR1cChjbGFzc05hbWUpOworICAgIGNoYXIqIGMgPSBmYXN0U3RyRHVwKGNsYXNzTmFt
ZSk7CiAKICAgICBjaGFyKiByZXN1bHQgPSBjOwogICAgIHdoaWxlICgqYykgewpAQCAtMzIyLDcg
KzMyMiw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZENsYXNzTmFtZShTdHJpbmdCdWlsZGUKIAogICAg
IGJ1aWxkZXIuYXBwZW5kKHJlc3VsdCk7CiAKLSAgICBmcmVlKHJlc3VsdCk7CisgICAgZmFzdEZy
ZWUocmVzdWx0KTsKIH0KIAogY29uc3QgY2hhciogSmF2YU1ldGhvZDo6c2lnbmF0dXJlKCkgY29u
c3QKQEAgLTM1OSw3ICszNTksNyBAQCBjb25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUo
KSBjb25zCiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgc2lnbmF0dXJlU3RyaW5nID0gc2ln
bmF0dXJlQnVpbGRlci50b1N0cmluZygpOwotICAgICAgICBtX3NpZ25hdHVyZSA9IHN0cmR1cChz
aWduYXR1cmVTdHJpbmcudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fc2lnbmF0dXJlID0gZmFz
dFN0ckR1cChzaWduYXR1cmVTdHJpbmcudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIG1fc2lnbmF0dXJlOwpAQCAtMzg1LDEzICszODUsMTMgQEAgSmF2YUFycmF5OjpKYXZhQXJy
YXkoam9iamVjdCBhcnJheSwgY29ucwogICAgIC8vIEphdmEgYXJyYXkgYXJlIGZpeGVkIGxlbmd0
aCwgc28gd2UgY2FuIGNhY2hlIGxlbmd0aC4KICAgICBKTklFbnYqIGVudiA9IGdldEpOSUVudigp
OwogICAgIG1fbGVuZ3RoID0gZW52LT5HZXRBcnJheUxlbmd0aChzdGF0aWNfY2FzdDxqYXJyYXk+
KG1fYXJyYXktPm1faW5zdGFuY2UpKTsKLSAgICBtX3R5cGUgPSBzdHJkdXAodHlwZSk7CisgICAg
bV90eXBlID0gZmFzdFN0ckR1cCh0eXBlKTsKICAgICBtX3Jvb3RPYmplY3QgPSByb290T2JqZWN0
OwogfQogCiBKYXZhQXJyYXk6On5KYXZhQXJyYXkoKQogewotICAgIGZyZWUoY29uc3RfY2FzdDxj
aGFyKj4obV90eXBlKSk7CisgICAgZmFzdEZyZWUoY29uc3RfY2FzdDxjaGFyKj4obV90eXBlKSk7
CiB9CiAKIFJvb3RPYmplY3QqIEphdmFBcnJheTo6cm9vdE9iamVjdCgpIGNvbnN0CkBAIC00MDks
NyArNDA5LDcgQEAgdm9pZCBKYXZhQXJyYXk6OnNldFZhbHVlQXQoRXhlY1N0YXRlKiBleAogICAg
ICAgICAvLyBUaGUgdHlwZSBvZiB0aGUgYXJyYXkgd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKICAg
ICAgICAgLy8gIltMamF2YS5sYW5nLnN0cmluZzsiLiAgVGhpcyBpcyBndWFyYW50ZWVkLCBzbyBu
byBuZWVkCiAgICAgICAgIC8vIGZvciBleHRyYSBzYW5pdHkgY2hlY2tzLgotICAgICAgICBqYXZh
Q2xhc3NOYW1lID0gc3RyZHVwKCZtX3R5cGVbMl0pOworICAgICAgICBqYXZhQ2xhc3NOYW1lID0g
ZmFzdFN0ckR1cCgmbV90eXBlWzJdKTsKICAgICAgICAgamF2YUNsYXNzTmFtZVtzdHJjaHIoamF2
YUNsYXNzTmFtZSwgJzsnKS1qYXZhQ2xhc3NOYW1lXSA9IDA7CiAgICAgfQogICAgIGp2YWx1ZSBh
SlZhbHVlID0gY29udmVydFZhbHVlVG9KVmFsdWUoZXhlYywgYVZhbHVlLCBhcnJheVR5cGUsIGph
dmFDbGFzc05hbWUpOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIHZvaWQgSmF2YUFycmF5OjpzZXRWYWx1
ZUF0KEV4ZWNTdGF0ZSogZXgKICAgICB9CiAKICAgICBpZiAoamF2YUNsYXNzTmFtZSkKLSAgICAg
ICAgZnJlZShjb25zdF9jYXN0PGNoYXIqPihqYXZhQ2xhc3NOYW1lKSk7CisgICAgICAgIGZhc3RG
cmVlKGNvbnN0X2Nhc3Q8Y2hhcio+KGphdmFDbGFzc05hbWUpKTsKIH0KIAogCkluZGV4OiBXZWJD
b3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCShyZXZpc2lvbiA1MzYxOSkKKysrIFdl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDYsNyArNDYsNyBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpCiAK
ICAgICBqc3RyaW5nIGNsYXNzTmFtZSA9IChqc3RyaW5nKWNhbGxKTklNZXRob2Q8am9iamVjdD4o
YUNsYXNzLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOwogICAgIGNvbnN0IGNo
YXIqIGNsYXNzTmFtZUMgPSBnZXRDaGFyYWN0ZXJzRnJvbUpTdHJpbmcoY2xhc3NOYW1lKTsKLSAg
ICBtX25hbWUgPSBzdHJkdXAoY2xhc3NOYW1lQyk7CisgICAgbV9uYW1lID0gZmFzdFN0ckR1cChj
bGFzc05hbWVDKTsKICAgICByZWxlYXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoY2xhc3NOYW1lLCBj
bGFzc05hbWVDKTsKIAogICAgIGludCBpOwpAQCAtOTIsNyArOTIsNyBAQCBKYXZhQ2xhc3M6Okph
dmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFuY2UpCiAKIEphdmFDbGFzczo6fkphdmFDbGFzcygpCiB7
Ci0gICAgZnJlZShjb25zdF9jYXN0PGNoYXIqPihtX25hbWUpKTsKKyAgICBmYXN0RnJlZShjb25z
dF9jYXN0PGNoYXIqPihtX25hbWUpKTsKIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gNTM2MTkpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBT
Q2UKIAogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQog
ewotICAgIGZyZWUobV91cmwpOworICAgIGZhc3RGcmVlKG1fdXJsKTsKICAgICBpZiAobV9jdXN0
b21IZWFkZXJzKQogICAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7
CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1h
bmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlSGFuZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDUzNjE5KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM1LDEzICsxMzUsMTMgQEAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjp+UmVzb3VyY2VI
YW5kbGVNYQogICAgIGN1cmxfbXVsdGlfY2xlYW51cChtX2N1cmxNdWx0aUhhbmRsZSk7CiAgICAg
Y3VybF9zaGFyZV9jbGVhbnVwKG1fY3VybFNoYXJlSGFuZGxlKTsKICAgICBpZiAobV9jb29raWVK
YXJGaWxlTmFtZSkKLSAgICAgICAgZnJlZShtX2Nvb2tpZUphckZpbGVOYW1lKTsKKyAgICAgICAg
ZmFzdEZyZWUobV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgp
OwogfQogCiB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUo
Y29uc3QgY2hhciogY29va2llSmFyRmlsZU5hbWUpCiB7Ci0gICAgbV9jb29raWVKYXJGaWxlTmFt
ZSA9IHN0cmR1cChjb29raWVKYXJGaWxlTmFtZSk7CisgICAgbV9jb29raWVKYXJGaWxlTmFtZSA9
IGZhc3RTdHJEdXAoY29va2llSmFyRmlsZU5hbWUpOwogfQogCiBSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIqIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKQpAQCAtNzQxLDcgKzc0
MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGEKICAgICBBU1NF
UlQoIWQtPm1fdXJsKTsKIAogICAgIC8vIHVybCBpcyBpbiBBU0NJSSBzbyBsYXRpbjEoKSB3aWxs
IG9ubHkgY29udmVydCBpdCB0byBjaGFyKiB3aXRob3V0IGNoYXJhY3RlciB0cmFuc2xhdGlvbi4K
LSAgICBkLT5tX3VybCA9IHN0cmR1cCh1cmwubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBkLT5tX3Vy
bCA9IGZhc3RTdHJEdXAodXJsLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgY3VybF9lYXN5X3NldG9w
dChkLT5tX2hhbmRsZSwgQ1VSTE9QVF9VUkwsIGQtPm1fdXJsKTsKIAogICAgIGlmIChtX2Nvb2tp
ZUphckZpbGVOYW1lKSB7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24g
NTM2MTkpCisrKyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsNyArODQsNyBAQCBQbHVnaW5TdHJlYW06On5QbHVnaW5TdHJlYW0oKQogICAgIEFT
U0VSVChtX3N0cmVhbVN0YXRlICE9IFN0cmVhbVN0YXJ0ZWQpOwogICAgIEFTU0VSVCghbV9sb2Fk
ZXIpOwogCi0gICAgZnJlZSgoY2hhciopbV9zdHJlYW0udXJsKTsKKyAgICBmYXN0RnJlZSgoY2hh
ciopbV9zdHJlYW0udXJsKTsKIAogICAgIHN0cmVhbXMoKS5yZW1vdmUoJm1fc3RyZWFtKTsKIH0K
QEAgLTEzMyw5ICsxMzMsOSBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogICAg
IC8vIFNvbWUgcGx1Z2lucyAoRmxhc2gpIGV4cGVjdCB0aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUg
cGFzc2VkIGJhY2sgZGVjb2RlZCBhcyB0aGlzIGlzIHRoZQogICAgIC8vIGZvcm1hdCB1c2VkIHdo
ZW4gcmVxdWVzdGluZyB0aGUgVVJMLgogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChyZXNw
b25zZVVSTCkpCi0gICAgICAgIG1fc3RyZWFtLnVybCA9IHN0cmR1cChkZWNvZGVVUkxFc2NhcGVT
ZXF1ZW5jZXMocmVzcG9uc2VVUkwuc3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBt
X3N0cmVhbS51cmwgPSBmYXN0U3RyRHVwKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhyZXNwb25z
ZVVSTC5zdHJpbmcoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVh
bS51cmwgPSBzdHJkdXAocmVzcG9uc2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgIG1fc3RyZWFtLnVybCA9IGZhc3RTdHJEdXAocmVzcG9uc2VVUkwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKICAgICBDU3RyaW5nIG1pbWVUeXBlU3RyID0gbV9yZXNvdXJjZVJlc3BvbnNl
Lm1pbWVUeXBlKCkudXRmOCgpOwogCkluZGV4OiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGli
eHNsdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQu
Y3BwCShyZXZpc2lvbiA1MzYxOSkKKysrIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDggKzIwMSw4IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiogeHNsdFBhcmFtQXJyYXlGcm9tUGEKICAgICBYU0xUUHJvY2Vzc29yOjpQYXJhbWV0ZXJNYXA6
Oml0ZXJhdG9yIGVuZCA9IHBhcmFtZXRlcnMuZW5kKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogICAgIGZvciAoWFNMVFByb2Nlc3Nvcjo6UGFyYW1ldGVyTWFwOjppdGVyYXRvciBpdCA9IHBh
cmFtZXRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHBhcmFtZXRlckFy
cmF5W2luZGV4KytdID0gc3RyZHVwKGl0LT5maXJzdC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
cGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBzdHJkdXAoaXQtPnNlY29uZC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgcGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBmYXN0U3RyRHVwKGl0LT5maXJz
dC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBmYXN0
U3RyRHVwKGl0LT5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogICAgIHBhcmFtZXRlckFy
cmF5W2luZGV4XSA9IDA7CiAKQEAgLTIxNiw4ICsyMTYsOCBAQCBzdGF0aWMgdm9pZCBmcmVlWHNs
dFBhcmFtQXJyYXkoY29uc3QgY2hhCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICgqdGVt
cCkgewotICAgICAgICBmcmVlKCh2b2lkKikqKHRlbXArKykpOyAvLyBzdHJkdXAgcmV0dXJucyBt
YWxsb2MnZCBibG9ja3MsIHNvIHdlIGhhdmUgdG8gdXNlIGZyZWUoKSBoZXJlCi0gICAgICAgIGZy
ZWUoKHZvaWQqKSoodGVtcCsrKSk7CisgICAgICAgIGZhc3RGcmVlKCh2b2lkKikqKHRlbXArKykp
OworICAgICAgICBmYXN0RnJlZSgodm9pZCopKih0ZW1wKyspKTsKICAgICB9CiAgICAgZmFzdEZy
ZWUocGFyYW1zKTsKIH0K
</data>
<flag name="review"
          id="29488"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="29489"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47194</attachid>
            <date>2010-01-22 05:47:53 -0800</date>
            <delta_ts>2010-02-03 07:39:16 -0800</delta_ts>
            <desc>Use fastStrDup</desc>
            <filename>fastStrDup.patch</filename>
            <type>text/plain</type>
            <size>9091</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzY5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMDEtMjIgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgZmFzdFN0ckR1cCBpbnN0ZWFkIG9mIHN0cmR1cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5NDMKKworICAgICAgICBSZXBsYWNlIHN0cmR1
cC9mcmVlIHdpdGggZmFzdFN0ckR1cC9mYXN0RnJlZSAgICAgICAKKworICAgICAgICAqIGJyaWRn
ZS9JZGVudGlmaWVyUmVwLmg6CisgICAgICAgIChXZWJDb3JlOjpJZGVudGlmaWVyUmVwOjpJZGVu
dGlmaWVyUmVwKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHA6CisgICAgICAg
IChKYXZhTWV0aG9kOjp+SmF2YU1ldGhvZCk6CisgICAgICAgIChhcHBlbmRDbGFzc05hbWUpOgor
ICAgICAgICAoSmF2YU1ldGhvZDo6c2lnbmF0dXJlKToKKyAgICAgICAgKEphdmFBcnJheTo6SmF2
YUFycmF5KToKKyAgICAgICAgKEphdmFBcnJheTo6fkphdmFBcnJheSk6CisgICAgICAgIChKYXZh
QXJyYXk6OnNldFZhbHVlQXQpOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pT
Qy5jcHA6CisgICAgICAgIChKYXZhQ2xhc3M6OkphdmFDbGFzcyk6CisgICAgICAgIChKYXZhQ2xh
c3M6On5KYXZhQ2xhc3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVJbnRlcm5h
bDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyOjp+UmVzb3VyY2VIYW5kbGVNYW5hZ2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGFuZGxlKToKKyAg
ICAgICAgKiBwbHVnaW5zL1BsdWdpblN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5TdHJlYW06On5QbHVnaW5TdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luU3RyZWFt
OjpzdGFydFN0cmVhbSk6CisgICAgICAgICogeG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnhzbHRQYXJhbUFycmF5RnJvbVBhcmFtZXRlck1hcCk6CisgICAg
ICAgIChXZWJDb3JlOjpmcmVlWHNsdFBhcmFtQXJyYXkpOgorCiAyMDEwLTAxLTIyICBCcmlhbiBX
ZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBU
aW1vdGh5IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9JZGVudGlmaWVyUmVwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5oCShyZXZpc2lvbiA1MzY4
MSkKKysrIFdlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuaAkod29ya2luZyBjb3B5KQpAQCAt
NTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJSZXAoY29uc3QgY2hhciogbmFt
ZSkKICAgICAgICAgOiBtX2lzU3RyaW5nKHRydWUpCiAgICAgewotICAgICAgICBtX3ZhbHVlLm1f
c3RyaW5nID0gc3RyZHVwKG5hbWUpOworICAgICAgICBtX3ZhbHVlLm1fc3RyaW5nID0gZmFzdFN0
ckR1cChuYW1lKTsKICAgICB9CiAgICAgCiAgICAgfklkZW50aWZpZXJSZXAoKQpJbmRleDogV2Vi
Q29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlk
Z2Uvam5pL0pOSUJyaWRnZS5jcHAJKHJldmlzaW9uIDUzNjgxKQorKysgV2ViQ29yZS9icmlkZ2Uv
am5pL0pOSUJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCBKYXZh
TWV0aG9kOjpKYXZhTWV0aG9kKEpOSUVudiogZW52LCBqb2JqCiBKYXZhTWV0aG9kOjp+SmF2YU1l
dGhvZCgpCiB7CiAgICAgaWYgKG1fc2lnbmF0dXJlKQotICAgICAgICBmcmVlKG1fc2lnbmF0dXJl
KTsKKyAgICAgICAgZmFzdEZyZWUobV9zaWduYXR1cmUpOwogICAgIGRlbGV0ZVtdIG1fcGFyYW1l
dGVyczsKIH07CiAKQEAgLTMxMSw3ICszMTEsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDbGFzc05h
bWUoU3RyaW5nQnVpbGRlCiB7CiAgICAgQVNTRVJUKEpTTG9jazo6bG9ja0NvdW50KCkgPiAwKTsK
IAotICAgIGNoYXIqIGMgPSBzdHJkdXAoY2xhc3NOYW1lKTsKKyAgICBjaGFyKiBjID0gZmFzdFN0
ckR1cChjbGFzc05hbWUpOwogCiAgICAgY2hhciogcmVzdWx0ID0gYzsKICAgICB3aGlsZSAoKmMp
IHsKQEAgLTMyMiw3ICszMjIsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRDbGFzc05hbWUoU3RyaW5n
QnVpbGRlCiAKICAgICBidWlsZGVyLmFwcGVuZChyZXN1bHQpOwogCi0gICAgZnJlZShyZXN1bHQp
OworICAgIGZhc3RGcmVlKHJlc3VsdCk7CiB9CiAKIGNvbnN0IGNoYXIqIEphdmFNZXRob2Q6OnNp
Z25hdHVyZSgpIGNvbnN0CkBAIC0zNTksNyArMzU5LDcgQEAgY29uc3QgY2hhciogSmF2YU1ldGhv
ZDo6c2lnbmF0dXJlKCkgY29ucwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIHNpZ25hdHVy
ZVN0cmluZyA9IHNpZ25hdHVyZUJ1aWxkZXIudG9TdHJpbmcoKTsKLSAgICAgICAgbV9zaWduYXR1
cmUgPSBzdHJkdXAoc2lnbmF0dXJlU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX3Np
Z25hdHVyZSA9IGZhc3RTdHJEdXAoc2lnbmF0dXJlU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0KIAogICAgIHJldHVybiBtX3NpZ25hdHVyZTsKQEAgLTM4NSwxMyArMzg1LDEzIEBAIEphdmFB
cnJheTo6SmF2YUFycmF5KGpvYmplY3QgYXJyYXksIGNvbnMKICAgICAvLyBKYXZhIGFycmF5IGFy
ZSBmaXhlZCBsZW5ndGgsIHNvIHdlIGNhbiBjYWNoZSBsZW5ndGguCiAgICAgSk5JRW52KiBlbnYg
PSBnZXRKTklFbnYoKTsKICAgICBtX2xlbmd0aCA9IGVudi0+R2V0QXJyYXlMZW5ndGgoc3RhdGlj
X2Nhc3Q8amFycmF5PihtX2FycmF5LT5tX2luc3RhbmNlKSk7Ci0gICAgbV90eXBlID0gc3RyZHVw
KHR5cGUpOworICAgIG1fdHlwZSA9IGZhc3RTdHJEdXAodHlwZSk7CiAgICAgbV9yb290T2JqZWN0
ID0gcm9vdE9iamVjdDsKIH0KIAogSmF2YUFycmF5Ojp+SmF2YUFycmF5KCkKIHsKLSAgICBmcmVl
KGNvbnN0X2Nhc3Q8Y2hhcio+KG1fdHlwZSkpOworICAgIGZhc3RGcmVlKGNvbnN0X2Nhc3Q8Y2hh
cio+KG1fdHlwZSkpOwogfQogCiBSb290T2JqZWN0KiBKYXZhQXJyYXk6OnJvb3RPYmplY3QoKSBj
b25zdApAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgSmF2YUFycmF5OjpzZXRWYWx1ZUF0KEV4ZWNT
dGF0ZSogZXgKICAgICAgICAgLy8gVGhlIHR5cGUgb2YgdGhlIGFycmF5IHdpbGwgYmUgc29tZXRo
aW5nIGxpa2U6CiAgICAgICAgIC8vICJbTGphdmEubGFuZy5zdHJpbmc7Ii4gIFRoaXMgaXMgZ3Vh
cmFudGVlZCwgc28gbm8gbmVlZAogICAgICAgICAvLyBmb3IgZXh0cmEgc2FuaXR5IGNoZWNrcy4K
LSAgICAgICAgamF2YUNsYXNzTmFtZSA9IHN0cmR1cCgmbV90eXBlWzJdKTsKKyAgICAgICAgamF2
YUNsYXNzTmFtZSA9IGZhc3RTdHJEdXAoJm1fdHlwZVsyXSk7CiAgICAgICAgIGphdmFDbGFzc05h
bWVbc3RyY2hyKGphdmFDbGFzc05hbWUsICc7JyktamF2YUNsYXNzTmFtZV0gPSAwOwogICAgIH0K
ICAgICBqdmFsdWUgYUpWYWx1ZSA9IGNvbnZlcnRWYWx1ZVRvSlZhbHVlKGV4ZWMsIGFWYWx1ZSwg
YXJyYXlUeXBlLCBqYXZhQ2xhc3NOYW1lKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIEphdmFB
cnJheTo6c2V0VmFsdWVBdChFeGVjU3RhdGUqIGV4CiAgICAgfQogCiAgICAgaWYgKGphdmFDbGFz
c05hbWUpCi0gICAgICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4oamF2YUNsYXNzTmFtZSkpOwor
ICAgICAgICBmYXN0RnJlZShjb25zdF9jYXN0PGNoYXIqPihqYXZhQ2xhc3NOYW1lKSk7CiB9CiAK
IApJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkocmV2aXNpb24g
NTM2ODEpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgSmF2YUNsYXNzOjpKYXZhQ2xhc3Moam9iamVjdCBh
bkluc3RhbmNlKQogCiAgICAganN0cmluZyBjbGFzc05hbWUgPSAoanN0cmluZyljYWxsSk5JTWV0
aG9kPGpvYmplY3Q+KGFDbGFzcywgImdldE5hbWUiLCAiKClMamF2YS9sYW5nL1N0cmluZzsiKTsK
ICAgICBjb25zdCBjaGFyKiBjbGFzc05hbWVDID0gZ2V0Q2hhcmFjdGVyc0Zyb21KU3RyaW5nKGNs
YXNzTmFtZSk7Ci0gICAgbV9uYW1lID0gc3RyZHVwKGNsYXNzTmFtZUMpOworICAgIG1fbmFtZSA9
IGZhc3RTdHJEdXAoY2xhc3NOYW1lQyk7CiAgICAgcmVsZWFzZUNoYXJhY3RlcnNGb3JKU3RyaW5n
KGNsYXNzTmFtZSwgY2xhc3NOYW1lQyk7CiAKICAgICBpbnQgaTsKQEAgLTkyLDcgKzkyLDcgQEAg
SmF2YUNsYXNzOjpKYXZhQ2xhc3Moam9iamVjdCBhbkluc3RhbmNlKQogCiBKYXZhQ2xhc3M6On5K
YXZhQ2xhc3MoKQogewotICAgIGZyZWUoY29uc3RfY2FzdDxjaGFyKj4obV9uYW1lKSk7CisgICAg
ZmFzdEZyZWUoY29uc3RfY2FzdDxjaGFyKj4obV9uYW1lKSk7CiAKICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDUzNjgxKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgSGFzaFNldDxTdHJpbmc+JiBh
bGxvd3NBbnlIVFRQU0NlCiAKIFJlc291cmNlSGFuZGxlSW50ZXJuYWw6On5SZXNvdXJjZUhhbmRs
ZUludGVybmFsKCkKIHsKLSAgICBmcmVlKG1fdXJsKTsKKyAgICBmYXN0RnJlZShtX3VybCk7CiAg
ICAgaWYgKG1fY3VzdG9tSGVhZGVycykKICAgICAgICAgY3VybF9zbGlzdF9mcmVlX2FsbChtX2N1
c3RvbUhlYWRlcnMpOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCShyZXZpc2lvbiA1MzY4MSkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlTWFuYWdlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMyArMTM1LDEzIEBAIFJlc291cmNlSGFuZGxlTWFuYWdl
cjo6flJlc291cmNlSGFuZGxlTWEKICAgICBjdXJsX211bHRpX2NsZWFudXAobV9jdXJsTXVsdGlI
YW5kbGUpOwogICAgIGN1cmxfc2hhcmVfY2xlYW51cChtX2N1cmxTaGFyZUhhbmRsZSk7CiAgICAg
aWYgKG1fY29va2llSmFyRmlsZU5hbWUpCi0gICAgICAgIGZyZWUobV9jb29raWVKYXJGaWxlTmFt
ZSk7CisgICAgICAgIGZhc3RGcmVlKG1fY29va2llSmFyRmlsZU5hbWUpOwogICAgIGN1cmxfZ2xv
YmFsX2NsZWFudXAoKTsKIH0KIAogdm9pZCBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldENvb2tp
ZUphckZpbGVOYW1lKGNvbnN0IGNoYXIqIGNvb2tpZUphckZpbGVOYW1lKQogewotICAgIG1fY29v
a2llSmFyRmlsZU5hbWUgPSBzdHJkdXAoY29va2llSmFyRmlsZU5hbWUpOworICAgIG1fY29va2ll
SmFyRmlsZU5hbWUgPSBmYXN0U3RyRHVwKGNvb2tpZUphckZpbGVOYW1lKTsKIH0KIAogUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyKiBSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNoYXJlZEluc3RhbmNlKCkK
QEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6
ZUhhCiAgICAgQVNTRVJUKCFkLT5tX3VybCk7CiAKICAgICAvLyB1cmwgaXMgaW4gQVNDSUkgc28g
bGF0aW4xKCkgd2lsbCBvbmx5IGNvbnZlcnQgaXQgdG8gY2hhciogd2l0aG91dCBjaGFyYWN0ZXIg
dHJhbnNsYXRpb24uCi0gICAgZC0+bV91cmwgPSBzdHJkdXAodXJsLmxhdGluMSgpLmRhdGEoKSk7
CisgICAgZC0+bV91cmwgPSBmYXN0U3RyRHVwKHVybC5sYXRpbjEoKS5kYXRhKCkpOwogICAgIGN1
cmxfZWFzeV9zZXRvcHQoZC0+bV9oYW5kbGUsIENVUkxPUFRfVVJMLCBkLT5tX3VybCk7CiAKICAg
ICBpZiAobV9jb29raWVKYXJGaWxlTmFtZSkgewpJbmRleDogV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5j
cHAJKHJldmlzaW9uIDUzNjgxKQorKysgV2ViQ29yZS9wbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgUGx1Z2luU3RyZWFtOjp+UGx1Z2luU3Ry
ZWFtKCkKICAgICBBU1NFUlQobV9zdHJlYW1TdGF0ZSAhPSBTdHJlYW1TdGFydGVkKTsKICAgICBB
U1NFUlQoIW1fbG9hZGVyKTsKIAotICAgIGZyZWUoKGNoYXIqKW1fc3RyZWFtLnVybCk7CisgICAg
ZmFzdEZyZWUoKGNoYXIqKW1fc3RyZWFtLnVybCk7CiAKICAgICBzdHJlYW1zKCkucmVtb3ZlKCZt
X3N0cmVhbSk7CiB9CkBAIC0xMzMsOSArMTMzLDkgQEAgdm9pZCBQbHVnaW5TdHJlYW06OnN0YXJ0
U3RyZWFtKCkKICAgICAvLyBTb21lIHBsdWdpbnMgKEZsYXNoKSBleHBlY3QgdGhhdCBqYXZhc2Ny
aXB0IFVSTHMgYXJlIHBhc3NlZCBiYWNrIGRlY29kZWQgYXMgdGhpcyBpcyB0aGUKICAgICAvLyBm
b3JtYXQgdXNlZCB3aGVuIHJlcXVlc3RpbmcgdGhlIFVSTC4KICAgICBpZiAocHJvdG9jb2xJc0ph
dmFTY3JpcHQocmVzcG9uc2VVUkwpKQotICAgICAgICBtX3N0cmVhbS51cmwgPSBzdHJkdXAoZGVj
b2RlVVJMRXNjYXBlU2VxdWVuY2VzKHJlc3BvbnNlVVJMLnN0cmluZygpKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgbV9zdHJlYW0udXJsID0gZmFzdFN0ckR1cChkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXMocmVzcG9uc2VVUkwuc3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGVsc2UKLSAg
ICAgICAgbV9zdHJlYW0udXJsID0gc3RyZHVwKHJlc3BvbnNlVVJMLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICBtX3N0cmVhbS51cmwgPSBmYXN0U3RyRHVwKHJlc3BvbnNlVVJMLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQ1N0cmluZyBtaW1lVHlwZVN0ciA9IG1fcmVz
b3VyY2VSZXNwb25zZS5taW1lVHlwZSgpLnV0ZjgoKTsKIApJbmRleDogV2ViQ29yZS94bWwvWFNM
VFByb2Nlc3NvckxpYnhzbHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUveG1sL1hTTFRQcm9j
ZXNzb3JMaWJ4c2x0LmNwcAkocmV2aXNpb24gNTM2ODEpCisrKyBXZWJDb3JlL3htbC9YU0xUUHJv
Y2Vzc29yTGlieHNsdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMSw4ICsyMDEsOCBAQCBzdGF0
aWMgY29uc3QgY2hhcioqIHhzbHRQYXJhbUFycmF5RnJvbVBhCiAgICAgWFNMVFByb2Nlc3Nvcjo6
UGFyYW1ldGVyTWFwOjppdGVyYXRvciBlbmQgPSBwYXJhbWV0ZXJzLmVuZCgpOwogICAgIHVuc2ln
bmVkIGluZGV4ID0gMDsKICAgICBmb3IgKFhTTFRQcm9jZXNzb3I6OlBhcmFtZXRlck1hcDo6aXRl
cmF0b3IgaXQgPSBwYXJhbWV0ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBwYXJhbWV0ZXJBcnJheVtpbmRleCsrXSA9IHN0cmR1cChpdC0+Zmlyc3QudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4KytdID0gc3RyZHVwKGl0LT5zZWNvbmQu
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4KytdID0gZmFzdFN0
ckR1cChpdC0+Zmlyc3QudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHBhcmFtZXRlckFycmF5W2lu
ZGV4KytdID0gZmFzdFN0ckR1cChpdC0+c2Vjb25kLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KICAg
ICBwYXJhbWV0ZXJBcnJheVtpbmRleF0gPSAwOwogCkBAIC0yMTYsOCArMjE2LDggQEAgc3RhdGlj
IHZvaWQgZnJlZVhzbHRQYXJhbUFycmF5KGNvbnN0IGNoYQogICAgICAgICByZXR1cm47CiAKICAg
ICB3aGlsZSAoKnRlbXApIHsKLSAgICAgICAgZnJlZSgodm9pZCopKih0ZW1wKyspKTsgLy8gc3Ry
ZHVwIHJldHVybnMgbWFsbG9jJ2QgYmxvY2tzLCBzbyB3ZSBoYXZlIHRvIHVzZSBmcmVlKCkgaGVy
ZQotICAgICAgICBmcmVlKCh2b2lkKikqKHRlbXArKykpOworICAgICAgICBmYXN0RnJlZSgodm9p
ZCopKih0ZW1wKyspKTsKKyAgICAgICAgZmFzdEZyZWUoKHZvaWQqKSoodGVtcCsrKSk7CiAgICAg
fQogICAgIGZhc3RGcmVlKHBhcmFtcyk7CiB9Cg==
</data>
<flag name="review"
          id="29596"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="29597"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48030</attachid>
            <date>2010-02-03 07:39:16 -0800</date>
            <delta_ts>2010-02-08 10:22:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>fastStrDup.patch</filename>
            <type>text/plain</type>
            <size>8214</size>
            <attacher name="Kwang Yul Seo">skyul</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDI3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDItMDMgIEt3YW5nIFl1bCBTZW8gIDxza3l1bEBjb21wYW55
MTAwLm5ldD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgZmFzdFN0ckR1cCBpbnN0ZWFkIG9mIHN0cmR1cAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM5NDMKKworICAgICAgICBSZXBsYWNlIHN0cmR1
cC9mcmVlIHdpdGggZmFzdFN0ckR1cC9mYXN0RnJlZS4KKworICAgICAgICAqIGJyaWRnZS9JZGVu
dGlmaWVyUmVwLmg6CisgICAgICAgIChXZWJDb3JlOjpJZGVudGlmaWVyUmVwOjpJZGVudGlmaWVy
UmVwKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHA6CisgICAgICAgIChKYXZh
TWV0aG9kOjp+SmF2YU1ldGhvZCk6CisgICAgICAgIChhcHBlbmRDbGFzc05hbWUpOgorICAgICAg
ICAoSmF2YU1ldGhvZDo6c2lnbmF0dXJlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZh
Q2xhc3NKU0MuY3BwOgorICAgICAgICAoSmF2YUNsYXNzOjpKYXZhQ2xhc3MpOgorICAgICAgICAo
SmF2YUNsYXNzOjp+SmF2YUNsYXNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxl
SW50ZXJuYWw6On5SZXNvdXJjZUhhbmRsZUludGVybmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6flJlc291cmNlSGFuZGxlTWFuYWdlcik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZU1hbmFnZXI6OnNldENvb2tpZUphckZpbGVOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlTWFuYWdlcjo6aW5pdGlhbGl6ZUhhbmRs
ZSk6CisgICAgICAgICogcGx1Z2lucy9QbHVnaW5TdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGx1Z2luU3RyZWFtOjp+UGx1Z2luU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdp
blN0cmVhbTo6c3RhcnRTdHJlYW0pOgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yTGlieHNs
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp4c2x0UGFyYW1BcnJheUZyb21QYXJhbWV0ZXJNYXAp
OgorICAgICAgICAoV2ViQ29yZTo6ZnJlZVhzbHRQYXJhbUFycmF5KToKKwogMjAxMC0wMi0wMiAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL2JyaWRnZS9JZGVu
dGlmaWVyUmVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5o
CShyZXZpc2lvbiA1NDI3NykKKysrIFdlYkNvcmUvYnJpZGdlL0lkZW50aWZpZXJSZXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIElkZW50aWZpZXJSZXAo
Y29uc3QgY2hhciogbmFtZSkKICAgICAgICAgOiBtX2lzU3RyaW5nKHRydWUpCiAgICAgewotICAg
ICAgICBtX3ZhbHVlLm1fc3RyaW5nID0gc3RyZHVwKG5hbWUpOworICAgICAgICBtX3ZhbHVlLm1f
c3RyaW5nID0gZmFzdFN0ckR1cChuYW1lKTsKICAgICB9CiAgICAgCiAgICAgfklkZW50aWZpZXJS
ZXAoKQpJbmRleDogV2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAJKHJldmlzaW9uIDU0Mjc3KQorKysg
V2ViQ29yZS9icmlkZ2Uvam5pL0pOSUJyaWRnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw3
ICsxMDcsNyBAQCBKYXZhTWV0aG9kOjpKYXZhTWV0aG9kKEpOSUVudiogZW52LCBqb2JqCiBKYXZh
TWV0aG9kOjp+SmF2YU1ldGhvZCgpCiB7CiAgICAgaWYgKG1fc2lnbmF0dXJlKQotICAgICAgICBm
cmVlKG1fc2lnbmF0dXJlKTsKKyAgICAgICAgZmFzdEZyZWUobV9zaWduYXR1cmUpOwogICAgIGRl
bGV0ZVtdIG1fcGFyYW1ldGVyczsKIH07CiAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9p
ZCBhcHBlbmRDbGFzc05hbWUoU3RyaW5nQnVpbGRlCiAgICAgQVNTRVJUKEpTTG9jazo6bG9ja0Nv
dW50KCkgPiAwKTsKICNlbmRpZgogCi0gICAgY2hhciogYyA9IHN0cmR1cChjbGFzc05hbWUpOwor
ICAgIGNoYXIqIGMgPSBmYXN0U3RyRHVwKGNsYXNzTmFtZSk7CiAKICAgICBjaGFyKiByZXN1bHQg
PSBjOwogICAgIHdoaWxlICgqYykgewpAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyB2b2lkIGFw
cGVuZENsYXNzTmFtZShTdHJpbmdCdWlsZGUKIAogICAgIGJ1aWxkZXIuYXBwZW5kKHJlc3VsdCk7
CiAKLSAgICBmcmVlKHJlc3VsdCk7CisgICAgZmFzdEZyZWUocmVzdWx0KTsKIH0KIAogY29uc3Qg
Y2hhciogSmF2YU1ldGhvZDo6c2lnbmF0dXJlKCkgY29uc3QKQEAgLTE2OSw3ICsxNjksNyBAQCBj
b25zdCBjaGFyKiBKYXZhTWV0aG9kOjpzaWduYXR1cmUoKSBjb25zCiAgICAgICAgIH0KIAogICAg
ICAgICBTdHJpbmcgc2lnbmF0dXJlU3RyaW5nID0gc2lnbmF0dXJlQnVpbGRlci50b1N0cmluZygp
OwotICAgICAgICBtX3NpZ25hdHVyZSA9IHN0cmR1cChzaWduYXR1cmVTdHJpbmcudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIG1fc2lnbmF0dXJlID0gZmFzdFN0ckR1cChzaWduYXR1cmVTdHJpbmcu
dXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fc2lnbmF0dXJlOwpJbmRleDog
V2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhQ2xhc3NKU0MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUNsYXNzSlNDLmNwcAkocmV2aXNpb24gNTQyNzcpCisr
KyBXZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFDbGFzc0pTQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDE2ICs0MSwxNiBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhqb2JqZWN0IGFuSW5zdGFu
Y2UpCiAKICAgICBpZiAoIWFDbGFzcykgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzOiAg
dW5hYmxlIHRvIGNhbGwgZ2V0Q2xhc3Mgb24gaW5zdGFuY2UgJXBcbiIsIF9fUFJFVFRZX0ZVTkNU
SU9OX18sIGFuSW5zdGFuY2UpOwotICAgICAgICBtX25hbWUgPSBzdHJkdXAoIjxVbmtub3duPiIp
OworICAgICAgICBtX25hbWUgPSBmYXN0U3RyRHVwKCI8VW5rbm93bj4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChqc3RyaW5nIGNsYXNzTmFtZSA9IChqc3RyaW5nKWNhbGxK
TklNZXRob2Q8am9iamVjdD4oYUNsYXNzLCAiZ2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5n
OyIpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNsYXNzTmFtZUMgPSBnZXRDaGFyYWN0ZXJzRnJv
bUpTdHJpbmcoY2xhc3NOYW1lKTsKLSAgICAgICAgbV9uYW1lID0gc3RyZHVwKGNsYXNzTmFtZUMp
OworICAgICAgICBtX25hbWUgPSBmYXN0U3RyRHVwKGNsYXNzTmFtZUMpOwogICAgICAgICByZWxl
YXNlQ2hhcmFjdGVyc0ZvckpTdHJpbmcoY2xhc3NOYW1lLCBjbGFzc05hbWVDKTsKICAgICB9IGVs
c2UKLSAgICAgICAgbV9uYW1lID0gc3RyZHVwKCI8VW5rbm93bj4iKTsKKyAgICAgICAgbV9uYW1l
ID0gZmFzdFN0ckR1cCgiPFVua25vd24+Iik7CiAKICAgICBpbnQgaTsKICAgICBKTklFbnYqIGVu
diA9IGdldEpOSUVudigpOwpAQCAtOTcsNyArOTcsNyBAQCBKYXZhQ2xhc3M6OkphdmFDbGFzcyhq
b2JqZWN0IGFuSW5zdGFuY2UpCiAKIEphdmFDbGFzczo6fkphdmFDbGFzcygpCiB7Ci0gICAgZnJl
ZShjb25zdF9jYXN0PGNoYXIqPihtX25hbWUpKTsKKyAgICBmYXN0RnJlZShjb25zdF9jYXN0PGNo
YXIqPihtX25hbWUpKTsKIAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7
CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3Vy
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gNTQyNzcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3
ICs5MSw3IEBAIHN0YXRpYyBIYXNoU2V0PFN0cmluZz4mIGFsbG93c0FueUhUVFBTQ2UKIAogUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291cmNlSGFuZGxlSW50ZXJuYWwoKQogewotICAgIGZy
ZWUobV91cmwpOworICAgIGZhc3RGcmVlKG1fdXJsKTsKICAgICBpZiAobV9jdXN0b21IZWFkZXJz
KQogICAgICAgICBjdXJsX3NsaXN0X2ZyZWVfYWxsKG1fY3VzdG9tSGVhZGVycyk7CiB9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlTWFuYWdlci5jcHAJKHJldmlzaW9uIDU0Mjc3KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1
LDEzICsxMzUsMTMgQEAgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjp+UmVzb3VyY2VIYW5kbGVNYQog
ICAgIGN1cmxfbXVsdGlfY2xlYW51cChtX2N1cmxNdWx0aUhhbmRsZSk7CiAgICAgY3VybF9zaGFy
ZV9jbGVhbnVwKG1fY3VybFNoYXJlSGFuZGxlKTsKICAgICBpZiAobV9jb29raWVKYXJGaWxlTmFt
ZSkKLSAgICAgICAgZnJlZShtX2Nvb2tpZUphckZpbGVOYW1lKTsKKyAgICAgICAgZmFzdEZyZWUo
bV9jb29raWVKYXJGaWxlTmFtZSk7CiAgICAgY3VybF9nbG9iYWxfY2xlYW51cCgpOwogfQogCiB2
b2lkIFJlc291cmNlSGFuZGxlTWFuYWdlcjo6c2V0Q29va2llSmFyRmlsZU5hbWUoY29uc3QgY2hh
ciogY29va2llSmFyRmlsZU5hbWUpCiB7Ci0gICAgbV9jb29raWVKYXJGaWxlTmFtZSA9IHN0cmR1
cChjb29raWVKYXJGaWxlTmFtZSk7CisgICAgbV9jb29raWVKYXJGaWxlTmFtZSA9IGZhc3RTdHJE
dXAoY29va2llSmFyRmlsZU5hbWUpOwogfQogCiBSZXNvdXJjZUhhbmRsZU1hbmFnZXIqIFJlc291
cmNlSGFuZGxlTWFuYWdlcjo6c2hhcmVkSW5zdGFuY2UoKQpAQCAtNzQxLDcgKzc0MSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVNYW5hZ2VyOjppbml0aWFsaXplSGEKICAgICBBU1NFUlQoIWQtPm1f
dXJsKTsKIAogICAgIC8vIHVybCBpcyBpbiBBU0NJSSBzbyBsYXRpbjEoKSB3aWxsIG9ubHkgY29u
dmVydCBpdCB0byBjaGFyKiB3aXRob3V0IGNoYXJhY3RlciB0cmFuc2xhdGlvbi4KLSAgICBkLT5t
X3VybCA9IHN0cmR1cCh1cmwubGF0aW4xKCkuZGF0YSgpKTsKKyAgICBkLT5tX3VybCA9IGZhc3RT
dHJEdXAodXJsLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgY3VybF9lYXN5X3NldG9wdChkLT5tX2hh
bmRsZSwgQ1VSTE9QVF9VUkwsIGQtPm1fdXJsKTsKIAogICAgIGlmIChtX2Nvb2tpZUphckZpbGVO
YW1lKSB7CkluZGV4OiBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAkocmV2aXNpb24gNTQyNzcpCisr
KyBXZWJDb3JlL3BsdWdpbnMvUGx1Z2luU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQs
NyArODQsNyBAQCBQbHVnaW5TdHJlYW06On5QbHVnaW5TdHJlYW0oKQogICAgIEFTU0VSVChtX3N0
cmVhbVN0YXRlICE9IFN0cmVhbVN0YXJ0ZWQpOwogICAgIEFTU0VSVCghbV9sb2FkZXIpOwogCi0g
ICAgZnJlZSgoY2hhciopbV9zdHJlYW0udXJsKTsKKyAgICBmYXN0RnJlZSgoY2hhciopbV9zdHJl
YW0udXJsKTsKIAogICAgIHN0cmVhbXMoKS5yZW1vdmUoJm1fc3RyZWFtKTsKIH0KQEAgLTEzMyw5
ICsxMzMsOSBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogICAgIC8vIFNvbWUg
cGx1Z2lucyAoRmxhc2gpIGV4cGVjdCB0aGF0IGphdmFzY3JpcHQgVVJMcyBhcmUgcGFzc2VkIGJh
Y2sgZGVjb2RlZCBhcyB0aGlzIGlzIHRoZQogICAgIC8vIGZvcm1hdCB1c2VkIHdoZW4gcmVxdWVz
dGluZyB0aGUgVVJMLgogICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlwdChyZXNwb25zZVVSTCkp
Ci0gICAgICAgIG1fc3RyZWFtLnVybCA9IHN0cmR1cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
cmVzcG9uc2VVUkwuc3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX3N0cmVhbS51
cmwgPSBmYXN0U3RyRHVwKGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhyZXNwb25zZVVSTC5zdHJp
bmcoKSkudXRmOCgpLmRhdGEoKSk7CiAgICAgZWxzZQotICAgICAgICBtX3N0cmVhbS51cmwgPSBz
dHJkdXAocmVzcG9uc2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fc3Ry
ZWFtLnVybCA9IGZhc3RTdHJEdXAocmVzcG9uc2VVUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBDU3RyaW5nIG1pbWVUeXBlU3RyID0gbV9yZXNvdXJjZVJlc3BvbnNlLm1pbWVUeXBl
KCkudXRmOCgpOwogCkluZGV4OiBXZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS94bWwvWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwCShyZXZp
c2lvbiA1NDI3NykKKysrIFdlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjAxLDggKzIwMSw4IEBAIHN0YXRpYyBjb25zdCBjaGFyKiogeHNsdFBh
cmFtQXJyYXlGcm9tUGEKICAgICBYU0xUUHJvY2Vzc29yOjpQYXJhbWV0ZXJNYXA6Oml0ZXJhdG9y
IGVuZCA9IHBhcmFtZXRlcnMuZW5kKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIGZv
ciAoWFNMVFByb2Nlc3Nvcjo6UGFyYW1ldGVyTWFwOjppdGVyYXRvciBpdCA9IHBhcmFtZXRlcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHBhcmFtZXRlckFycmF5W2luZGV4
KytdID0gc3RyZHVwKGl0LT5maXJzdC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcGFyYW1ldGVy
QXJyYXlbaW5kZXgrK10gPSBzdHJkdXAoaXQtPnNlY29uZC51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgcGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBmYXN0U3RyRHVwKGl0LT5maXJzdC51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgcGFyYW1ldGVyQXJyYXlbaW5kZXgrK10gPSBmYXN0U3RyRHVwKGl0
LT5zZWNvbmQudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogICAgIHBhcmFtZXRlckFycmF5W2luZGV4
XSA9IDA7CiAKQEAgLTIxNiw4ICsyMTYsOCBAQCBzdGF0aWMgdm9pZCBmcmVlWHNsdFBhcmFtQXJy
YXkoY29uc3QgY2hhCiAgICAgICAgIHJldHVybjsKIAogICAgIHdoaWxlICgqdGVtcCkgewotICAg
ICAgICBmcmVlKCh2b2lkKikqKHRlbXArKykpOyAvLyBzdHJkdXAgcmV0dXJucyBtYWxsb2MnZCBi
bG9ja3MsIHNvIHdlIGhhdmUgdG8gdXNlIGZyZWUoKSBoZXJlCi0gICAgICAgIGZyZWUoKHZvaWQq
KSoodGVtcCsrKSk7CisgICAgICAgIGZhc3RGcmVlKCh2b2lkKikqKHRlbXArKykpOworICAgICAg
ICBmYXN0RnJlZSgodm9pZCopKih0ZW1wKyspKTsKICAgICB9CiAgICAgZmFzdEZyZWUocGFyYW1z
KTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>