<?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>3294</bug_id>
          
          <creation_ts>2005-06-07 05:45:17 -0700</creation_ts>
          <short_desc>String.prototype.replace() fails with function as second param</short_desc>
          <delta_ts>2006-01-04 05:50:45 -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>JavaScriptCore</component>
          <version>412</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>VERIFIED</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="Gavin Kistner">gavin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>jhurshman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>10778</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Kistner">gavin</who>
    <bug_when>2005-06-07 05:45:17 -0700</bug_when>
    <thetext>ECMAScript-262 rev3 section 15.5.4.11 (page 102) allows the second parameter to the replace() method 
of String objects to be a function. However, JavaScriptCore does not support this feature (at least in the 
build of Safari 2.0.412), instead calling .toString() on the second parameter supplied to the replace() 
method, and using that as the return string.

The attached file &quot;ReplaceTest.html&quot; (also viewable at http://phrogz.net/JS/replaceTest.html) performs five 
tests of the replace method.

The severity is normal because a workaround exists - similar functionality can be achieved (more 
painfully) by using a regexp with the &apos;g&apos; flag and repeatedly calling .exec, working through the original 
string and building the output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10779</commentid>
    <comment_count>1</comment_count>
      <attachid>2127</attachid>
    <who name="Gavin Kistner">gavin</who>
    <bug_when>2005-06-07 05:46:18 -0700</bug_when>
    <thetext>Created attachment 2127
5 replace() tests, including one for this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>10780</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Kistner">gavin</who>
    <bug_when>2005-06-07 05:48:23 -0700</bug_when>
    <thetext>(This bug was copied from Apple&apos;s Bug Reporter #3749350)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12657</commentid>
    <comment_count>3</comment_count>
      <attachid>2489</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-20 02:27:33 -0700</bug_when>
    <thetext>Created attachment 2489
Handle the second argument being a function

Here&apos;s a patch that makes the test cases work for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12690</commentid>
    <comment_count>4</comment_count>
      <attachid>2489</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-20 08:49:01 -0700</bug_when>
    <thetext>Comment on attachment 2489
Handle the second argument being a function

I think the args for the replacement function should be declared inside each if
statement. There&apos;s no reason to keep the args list around between invocations.

And if you name it args, then the code is going to be a bit smaller too.

Does this do the right thing when the replacement function raises a JavaScript
exception?

Extra space after substr before &quot;(&quot;.

Minor issues; this looks pretty good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12701</commentid>
    <comment_count>5</comment_count>
      <attachid>2504</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-20 10:09:29 -0700</bug_when>
    <thetext>Created attachment 2504
Address comments

Here&apos;s a new patch that addresses the issues.

Regarding exceptions, the following code has been tested in kjs and found to be
working:

	function test(s) {
		throw ReferenceError;
	}
	
	try {
		testStr=&quot;hello&quot;;
		result = testStr.replace(&quot;hello&quot;, test);
	} catch (e) {
		debug(e);
	}

and gives the result
--&gt; (Internal Function)

If this isn&apos;t the correct behavior, then I suspect the same error applies for
compareWithCompareFunctionForQSort in array_object.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12702</commentid>
    <comment_count>6</comment_count>
      <attachid>2505</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2005-06-20 10:14:21 -0700</bug_when>
    <thetext>Created attachment 2505
Remove the space after substr

Sorry, forgot the space after substr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>12703</commentid>
    <comment_count>7</comment_count>
      <attachid>2505</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-06-20 11:20:09 -0700</bug_when>
    <thetext>Comment on attachment 2505
Remove the space after substr

r=me, given that we can land the attached test as a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14629</commentid>
    <comment_count>8</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2005-07-13 23:05:08 -0700</bug_when>
    <thetext>Fixed in 10.4.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14811</commentid>
    <comment_count>9</comment_count>
    <who name="John Sullivan">sullivan</who>
    <bug_when>2005-07-18 08:54:01 -0700</bug_when>
    <thetext>This appears fixed in tip of tree CVS, but does not appear fixed in 10.4.2 (contradicting the comment from 
Joost de Valk).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21636</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-10-09 16:05:17 -0700</bug_when>
    <thetext>In Radar as &lt;rdar://problem/4290603&gt; String.replace() does not support a function as a parameter 
(3294).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2127</attachid>
            <date>2005-06-07 05:46:18 -0700</date>
            <delta_ts>2005-06-07 05:46:18 -0700</delta_ts>
            <desc>5 replace() tests, including one for this bug.</desc>
            <filename>ReplaceTest.html</filename>
            <type>text/html</type>
            <size>4371</size>
            <attacher name="Gavin Kistner">gavin</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIg0KICAgICAg
ICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+DQo8aHRtbD4NCjxoZWFk
Pg0KCTx0aXRsZT5TdHJpbmcucmVwbGFjZSgmaGVsbGlwOykgdGVzdDwvdGl0bGU+DQoJPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iZG9jcy5jc3MiPg0KCTxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCI+DQoJCWxhYmVsCXsgYmFja2dyb3VuZC1jb2xv
cjp5ZWxsb3cgfQ0KCTwvc3R5bGU+DQoNCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSJzeW50YXhjb2xvci5qcyI+PC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keT4NCjxoMT5TdHJp
bmcucmVwbGFjZSgmaGVsbGlwOykgdGVzdDwvaDE+DQoNCjxkaXYgaWQ9InBhZ2Vjb250ZW50Ij4N
CjxoMj5TdXBwb3J0IGZvciA8Y29kZT5TdHJpbmcucmVwbGFjZSgnJmhlbGxpcDsnLCcmaGVsbGlw
OycpPC9jb2RlPjwvaDI+DQo8cHJlPjxjb2RlPnZhciBmb28gPSAnSXRcJ3MgdGhlIGVuZCBvZiB0
aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5lLic7DQp2YXIgcmVzdWx0ID0g
Zm9vLnJlcGxhY2UoJ2VuZCcsJ0JFR0lOTklORycpOzwvY29kZT48L3ByZT4NCg0KPHA+PGxhYmVs
PjxiPkV4cGVjdGVkPC9iPiByZXN1bHQ6PC9sYWJlbD4gIkl0J3MgdGhlIEJFR0lOTklORyBvZiB0
aGUgd29ybGQgYXMgd2Uga25vdyBpdCwgYW5kIEkgZmVlbCBmaW5lLiI8YnI+DQo8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCI+DQoJdmFyIGZvbyA9ICJJdCdzIHRoZSBlbmQgb2YgdGhlIHdv
cmxkIGFzIHdlIGtub3cgaXQsIGFuZCBJIGZlZWwgZmluZS4iOw0KCXZhciByZXN1bHQgPSBmb28u
cmVwbGFjZSgnZW5kJywnQkVHSU5OSU5HJyk7DQoJZG9jdW1lbnQud3JpdGUoJzxsYWJlbD48Yj5Z
b3VyPFwvYj4gcmVzdWx0OjxcL2xhYmVsPiAiJytyZXN1bHQrJyInKTsNCjwvc2NyaXB0Pg0KPC9w
Pg0KPHA+PGxhYmVsPk91dGNvbWU6PC9sYWJlbD4gaXQncyBiYXNpYywgYW5kIGl0IHdvcmtzIGlu
IGp1c3QgYWJvdXQgZXZlcnkgYnJvd3Nlci48L3A+DQoNCjxoMj5TdXBwb3J0IGZvciA8Y29kZT5T
dHJpbmcucmVwbGFjZSgvJmhlbGxpcDsvLCcmaGVsbGlwOycpPC9jb2RlPjwvaDI+DQo8cHJlPjxj
b2RlPnZhciB2b3dlbHMgPSAvW2FlaW91XS9naTsNCnJlc3VsdCA9IGZvby5yZXBsYWNlKHZvd2Vs
cywnLScpOzwvY29kZT48L3ByZT4NCg0KPHA+PGxhYmVsPjxiPkV4cGVjdGVkPC9iPiByZXN1bHQ6
PC9sYWJlbD4gIi10J3MgdGgtIC1uZCAtZiB0aC0gdy1ybGQgLXMgdy0ga24tdyAtdCwgLW5kIC0g
Zi0tbCBmLW4tLiI8YnI+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQoJdmFyIHZv
d2VscyA9IC9bYWVpb3VdL2dpOw0KCXJlc3VsdCA9IGZvby5yZXBsYWNlKHZvd2VscywnLScpOw0K
CWRvY3VtZW50LndyaXRlKCc8bGFiZWw+PGI+WW91cjxcL2I+IHJlc3VsdDo8XC9sYWJlbD4gIicr
cmVzdWx0KyciJyk7DQo8L3NjcmlwdD4NCjwvcD4NCjxwPjxsYWJlbD5PdXRjb21lOjwvbGFiZWw+
IGFsc28gd2VsbCBzdXBwb3J0ZWQgYnkgYnJvd3NlcnMuPC9wPg0KDQoNCjxoMj5TdXBwb3J0IGZv
ciA8Y29kZT5TdHJpbmcucmVwbGFjZSgvJmhlbGxpcDsvLG15RnVuY3Rpb24pPC9jb2RlPjwvaDI+
DQo8cHJlPjxjb2RlPmZ1bmN0aW9uIENhcGl0YWxpemUocyl7DQoJcmV0dXJuIHMudG9VcHBlckNh
c2UoKTsNCn0NCnJlc3VsdCA9IGZvby5yZXBsYWNlKHZvd2VscyxDYXBpdGFsaXplKTs8L2NvZGU+
PC9wcmU+DQoNCjxwPjxsYWJlbD48Yj5FeHBlY3RlZDwvYj4gcmVzdWx0OjwvbGFiZWw+ICJJdCdz
IHRoRSBFbmQgT2YgdGhFIHdPcmxkIEFzIHdFIGtuT3cgSXQsIEFuZCBJIGZFRWwgZkluRS4iPGJy
Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KCWZ1bmN0aW9uIENhcGl0YWxpemUo
cyl7DQoJCXJldHVybiBzLnRvVXBwZXJDYXNlKCk7DQoJfQ0KCXJlc3VsdCA9IGZvby5yZXBsYWNl
KHZvd2VscyxDYXBpdGFsaXplKTsNCglkb2N1bWVudC53cml0ZSgnPGxhYmVsPjxiPllvdXI8XC9i
PiByZXN1bHQ6PFwvbGFiZWw+ICInK3Jlc3VsdCsnIicpOw0KPC9zY3JpcHQ+DQo8L3A+DQo8cD48
bGFiZWw+T3V0Y29tZTo8L2xhYmVsPiBJRU1hYyAoNS4yLjIpIGFuZCBTYWZhcmkgKHVwIHRvIGFu
ZCBpbmNsdWRpbmcgMS4yLjIpIGRvIG5vdCBzdXBwb3J0IHN1cHBseWluZyBhIGZ1bmN0aW9uIGZv
ciB0aGUgc2Vjb25kIHBhcmFtZXRlci4gSW5zdGVhZCAudG9TdHJpbmcoKSBpcyBhcHBsaWVkIHRv
IHRoZSBmdW5jdGlvbiwgcmVzdWx0aW5nIGluIHRoZSByYXcgY29kZSBvZiB0aGUgZnVuY3Rpb24g
YmVpbmcgdXNlZCBpbiB0aGUgcmVwbGFjZW1lbnQuIChTZWUgU2VjdGlvbiAxNS41LjQuMTEgb2Yg
dGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9wdWJsaWNhdGlv
bnMvZmlsZXMvRUNNQS1TVC9FY21hLTI2Mi5wZGYiPkVDTUFTY3JpcHQgc3BlY2lmaWNhdGlvbjwv
YT4uKTwvcD4NCg0KDQo8aDI+U3VwcG9ydCBmb3IgPGNvZGU+U3RyaW5nLnJlcGxhY2UoLyZoZWxs
aXA7LyxteUZ1bmN0aW9uKTwvY29kZT4sIHVzaW5nIDxjb2RlPlJlZ0V4cDwvY29kZT48L2gyPg0K
PHByZT48Y29kZT5mdW5jdGlvbiBDYXBpdGFsaXplKCl7DQoJcmV0dXJuIFJlZ0V4cC4kMS50b1Vw
cGVyQ2FzZSgpK1JlZ0V4cC4kMjsNCn0NCnJlc3VsdCA9IGZvby5yZXBsYWNlKC8oW2FlaW91XSko
W2Etel0pL2csQ2FwaXRhbGl6ZSk7PC9jb2RlPjwvcHJlPg0KPHA+PGxhYmVsPjxiPkV4cGVjdGVk
PC9iPiByZXN1bHQ6PC9sYWJlbD4gIkl0J3MgdGhlIEVuZCBPZiB0aGUgd09ybGQgQXMgd2Uga25P
dyBJdCwgQW5kIEkgZkVlbCBmSW5lLiI8YnI+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+DQoJZnVuY3Rpb24gQ2FwaXRhbGl6ZSgpew0KCQlyZXR1cm4gUmVnRXhwLiQxLnRvVXBwZXJD
YXNlKCkrUmVnRXhwLiQyOw0KCX0NCglyZXN1bHQgPSBmb28ucmVwbGFjZSgvKFthZWlvdV0pKFth
LXpdKS9nLENhcGl0YWxpemUpOw0KCWRvY3VtZW50LndyaXRlKCc8bGFiZWw+PGI+WW91cjxcL2I+
IHJlc3VsdDo8XC9sYWJlbD4gIicrcmVzdWx0KyciJyk7DQo8L3NjcmlwdD4NCjwvcD4NCjxwPjxs
YWJlbD5PdXRjb21lOjwvbGFiZWw+IEluIGFkZGl0aW9uIHRvIHRoZSBJRU1hYydzIGFuZCBTYWZh
cmkncyBwcm9ibGVtIG1lbnRpb25lZCBhYm92ZSwgSUVXaW4gZG9lcyBub3Qgc2VlbSB0byBwb3B1
bGF0ZSB0aGUgPGNvZGU+UmVnRXhwPC9jb2RlPiBvYmplY3Qgd2hlbiBhIHJlZ3VsYXIgZXhwcmVz
c2lvbiBpcyB1c2VkIGluc2lkZSA8Y29kZT4ucmVwbGFjZSgpPC9jb2RlPi4gSUVXaW4gaGFzIG1h
am9yIHByb2JsZW1zIHdpdGggdGhpcy4gTW96aWxsYSBhbG9uZSBnZXRzIGFsbCBmb3VyIHRlc3Rz
IGNvcnJlY3QuPC9wPg0KDQoNCjxoMj5TdXBwb3J0IGZvciA8Y29kZT5TdHJpbmcucmVwbGFjZSgv
JmhlbGxpcDsvLG15RnVuY3Rpb24pPC9jb2RlPiwgdXNpbmcgcGFyYW1ldGVyczwvaDI+DQo8cHJl
Pjxjb2RlPmZ1bmN0aW9uIENhcGl0YWxpemUob3JpZyxyZTEscmUyKXsNCglyZXR1cm4gcmUxLnRv
VXBwZXJDYXNlKCkrcmUyOw0KfQ0KcmVzdWx0ID0gZm9vLnJlcGxhY2UoLyhbYWVpb3VdKShbYS16
XSkvZyxDYXBpdGFsaXplKTs8L2NvZGU+PC9wcmU+DQoNCjxwPjxsYWJlbD48Yj5FeHBlY3RlZDwv
Yj4gcmVzdWx0OjwvbGFiZWw+ICJJdCdzIHRoZSBFbmQgT2YgdGhlIHdPcmxkIEFzIHdlIGtuT3cg
SXQsIEFuZCBJIGZFZWwgZkluZS4iPGJyPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
Pg0KCWZ1bmN0aW9uIENhcGl0YWxpemUob3JpZyxyZTEscmUyKXsNCgkJcmV0dXJuIHJlMS50b1Vw
cGVyQ2FzZSgpK3JlMjsNCgl9DQoJcmVzdWx0ID0gZm9vLnJlcGxhY2UoLyhbYWVpb3VdKShbYS16
XSkvZyxDYXBpdGFsaXplKTsNCglkb2N1bWVudC53cml0ZSgnPGxhYmVsPjxiPllvdXI8XC9iPiBy
ZXN1bHQ6PFwvbGFiZWw+ICInK3Jlc3VsdCsnIicpOw0KPC9zY3JpcHQ+DQo8L3A+DQo8cD48bGFi
ZWw+T3V0Y29tZTo8L2xhYmVsPiBJRVdpbiBnZXRzIHRoaXMgb25lIHJpZ2h0LiBUaGlzIGlzIHRo
ZSBwcm9wZXIgbWV0aG9kIHRoYXQgd29ya3MgaW4gYWxsIGJyb3dzZXJzIHdoaWNoIHN1cHBvcnQg
dXNpbmcgYSBmdW5jdGlvbiBhcyB0aGUgc2Vjb25kIHBhcmFtZXRlci4gKFBsdXMsIGl0J3MgZmFz
dGVyIHRoYW4gYXR0ZW1wdGluZyB0byB1c2UgPGNvZGU+UmVnRXhwLiR4PC9jb2RlPiBhcyBhYm92
ZS4pPC9wPg0KDQo8L2Rpdj4NCg0KPC9ib2R5Pg0KPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2489</attachid>
            <date>2005-06-20 02:27:33 -0700</date>
            <delta_ts>2005-06-20 10:09:29 -0700</delta_ts>
            <desc>Handle the second argument being a function</desc>
            <filename>string-replace-function.diff</filename>
            <type>text/plain</type>
            <size>3920</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">PyAuRFNfU3RvcmUKSW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jv
b3QvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcxNApk
aWZmIC11IC1yMS43MTQgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNi8xOSAwNjoyMToz
MAkxLjcxNAorKysgQ2hhbmdlTG9nCTIwMDUvMDYvMjAgMDk6MjY6MTAKQEAgLTEsMyArMSwxMSBA
QAorMjAwNS0wNi0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAbWFjLmNvbT4KKworCUZp
eGVkOiA8aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjk0
PgorCisgICAgICAgICoga2pzL3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAocmVwbGFjZSk6
CisJSGFuZGxlIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgcmVwbGFjZSBiZWluZyBhIGZ1bmN0aW9u
LgorCiAyMDA1LTA2LTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IGtqcy9zdHJpbmdfb2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19v
YmplY3QuY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM0CmRpZmYgLXUgLXIxLjM0IHN0cmlu
Z19vYmplY3QuY3BwCi0tLSBzdHJpbmdfb2JqZWN0LmNwcAkyMDA1LzA0LzI5IDAwOjIyOjU1CTEu
MzQKKysrIHN0cmluZ19vYmplY3QuY3BwCTIwMDUvMDYvMjAgMDk6MjY6MTAKQEAgLTI2NCw2ICsy
NjQsMTUgQEAKIAogc3RhdGljIFZhbHVlIHJlcGxhY2UoRXhlY1N0YXRlICpleGVjLCBjb25zdCBV
U3RyaW5nICZzb3VyY2UsIGNvbnN0IFZhbHVlICZwYXR0ZXJuLCBjb25zdCBWYWx1ZSAmcmVwbGFj
ZW1lbnQpCiB7CisgIE9iamVjdEltcCAqcmVwbGFjZW1lbnRGdW5jdGlvbiA9IDA7CisgIFVTdHJp
bmcgcmVwbGFjZW1lbnRTdHJpbmc7CisgIExpc3QgcmVwbGFjZW1lbnRGdW5jdGlvbkFyZ3M7CisK
KyAgaWYgKHJlcGxhY2VtZW50LnR5cGUoKSA9PSBPYmplY3RUeXBlICYmIHJlcGxhY2VtZW50LnRv
T2JqZWN0KGV4ZWMpLmltcGxlbWVudHNDYWxsKCkpCisgICAgcmVwbGFjZW1lbnRGdW5jdGlvbiA9
IHJlcGxhY2VtZW50LnRvT2JqZWN0KGV4ZWMpLmltcCgpOworICBlbHNlCisgICAgcmVwbGFjZW1l
bnRTdHJpbmcgPSByZXBsYWNlbWVudC50b1N0cmluZyhleGVjKTsKKwogICBpZiAocGF0dGVybi50
eXBlKCkgPT0gT2JqZWN0VHlwZSAmJiBwYXR0ZXJuLnRvT2JqZWN0KGV4ZWMpLmluaGVyaXRzKCZS
ZWdFeHBJbXA6OmluZm8pKSB7CiAgICAgUmVnRXhwSW1wKiBpbXAgPSBzdGF0aWNfY2FzdDxSZWdF
eHBJbXAgKj4oIHBhdHRlcm4udG9PYmplY3QoZXhlYykuaW1wKCkgKTsKICAgICBSZWdFeHAgKnJl
ZyA9IGltcC0+cmVnRXhwKCk7CkBAIC0yNzEsOCArMjgwLDYgQEAKIAogICAgIFJlZ0V4cE9iamVj
dEltcCogcmVnRXhwT2JqID0gc3RhdGljX2Nhc3Q8UmVnRXhwT2JqZWN0SW1wKj4oZXhlYy0+bGV4
aWNhbEludGVycHJldGVyKCktPmJ1aWx0aW5SZWdFeHAoKS5pbXAoKSk7CiAKLSAgICBVU3RyaW5n
IHJlcGxhY2VtZW50U3RyaW5nID0gcmVwbGFjZW1lbnQudG9TdHJpbmcoZXhlYyk7Ci0KICAgICBp
bnQgbWF0Y2hJbmRleCA9IDA7CiAgICAgaW50IGxhc3RJbmRleCA9IDA7CiAgICAgaW50IHN0YXJ0
UG9zaXRpb24gPSAwOwpAQCAtMjk1LDYgKzMwMiwyNiBAQAogCiAgICAgICBwdXNoU291cmNlUmFu
Z2Uoc291cmNlUmFuZ2VzLCBzb3VyY2VSYW5nZUNvdW50LCBzb3VyY2VSYW5nZUNhcGFjaXR5LCBV
U3RyaW5nOjpSYW5nZShsYXN0SW5kZXgsIG1hdGNoSW5kZXggLSBsYXN0SW5kZXgpKTsKIAorICAg
ICAgaWYgKHJlcGxhY2VtZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICBpbnQgY29tcGxldGVNYXRj
aFN0YXJ0ID0gKCpvdmVjdG9yKVswXTsKKyAgICAgICAgICAKKyAgICAgICAgICByZXBsYWNlbWVu
dEZ1bmN0aW9uQXJncy5jbGVhcigpOworICAgICAgICAgIHJlcGxhY2VtZW50RnVuY3Rpb25Bcmdz
LmFwcGVuZChWYWx1ZShtYXRjaFN0cmluZykpOworICAgICAgICAgIAorICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCByZWctPnN1YlBhdHRlcm5zKCk7IGkrKykgeworICAgICAgICAg
ICAgICBpbnQgbWF0Y2hTdGFydCA9ICgqb3ZlY3RvcilbKGkgKyAxKSAqIDJdOworICAgICAgICAg
ICAgICBpbnQgbWF0Y2hMZW4gPSAoKm92ZWN0b3IpWyhpICsgMSkgKiAyICsgMV0gLSBtYXRjaFN0
YXJ0OworICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgcmVwbGFjZW1lbnRGdW5jdGlvbkFy
Z3MuYXBwZW5kKFZhbHVlKHNvdXJjZS5zdWJzdHIobWF0Y2hTdGFydCwgbWF0Y2hMZW4pKSk7Cisg
ICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICAgIHJlcGxhY2VtZW50RnVuY3Rpb25Bcmdz
LmFwcGVuZChWYWx1ZShjb21wbGV0ZU1hdGNoU3RhcnQpKTsKKyAgICAgICAgICByZXBsYWNlbWVu
dEZ1bmN0aW9uQXJncy5hcHBlbmQoVmFsdWUoc291cmNlKSk7CisKKyAgICAgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IHJlcGxhY2VtZW50RnVuY3Rpb24tPmNhbGwoZXhlYywgZXhlYy0+ZHluYW1p
Y0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRGdW5jdGlvbkFyZ3Mp
LnRvU3RyaW5nKGV4ZWMpOworICAgICAgfQorICAgICAgCiAgICAgICBVU3RyaW5nIHN1YnN0aXR1
dGVkUmVwbGFjZW1lbnQgPSBzdWJzdGl0dXRlQmFja3JlZmVyZW5jZXMocmVwbGFjZW1lbnRTdHJp
bmcsIHNvdXJjZSwgb3ZlY3RvciwgcmVnKTsKICAgICAgIHB1c2hSZXBsYWNlbWVudChyZXBsYWNl
bWVudHMsIHJlcGxhY2VtZW50Q291bnQsIHJlcGxhY2VtZW50Q2FwYWNpdHksIHN1YnN0aXR1dGVk
UmVwbGFjZW1lbnQpOwogCkBAIC0zMjcsNyArMzU0LDE4IEBACiAgIC8vIERvIHRoZSByZXBsYWNl
bWVudAogICBpZiAobWF0Y2hQb3MgPT0gLTEpCiAgICAgcmV0dXJuIFN0cmluZyhzb3VyY2UpOwot
ICByZXR1cm4gU3RyaW5nKHNvdXJjZS5zdWJzdHIoMCwgbWF0Y2hQb3MpICsgcmVwbGFjZW1lbnQu
dG9TdHJpbmcoZXhlYykgKyBzb3VyY2Uuc3Vic3RyKG1hdGNoUG9zICsgbWF0Y2hMZW4pKTsKKyAg
CisgIGlmIChyZXBsYWNlbWVudEZ1bmN0aW9uKSB7CisgICAgICByZXBsYWNlbWVudEZ1bmN0aW9u
QXJncy5jbGVhcigpOworICAgICAgcmVwbGFjZW1lbnRGdW5jdGlvbkFyZ3MuYXBwZW5kKFZhbHVl
KHNvdXJjZS5zdWJzdHIgKG1hdGNoUG9zLCBtYXRjaExlbikpKTsKKyAgICAgIHJlcGxhY2VtZW50
RnVuY3Rpb25BcmdzLmFwcGVuZChWYWx1ZShtYXRjaFBvcykpOworICAgICAgcmVwbGFjZW1lbnRG
dW5jdGlvbkFyZ3MuYXBwZW5kKFZhbHVlKHNvdXJjZSkpOworICAgICAgCisgICAgICByZXBsYWNl
bWVudFN0cmluZyA9IHJlcGxhY2VtZW50RnVuY3Rpb24tPmNhbGwoZXhlYywgZXhlYy0+ZHluYW1p
Y0ludGVycHJldGVyKCktPmdsb2JhbE9iamVjdCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudEZ1bmN0aW9uQXJncykudG9T
dHJpbmcoZXhlYyk7CisgIH0KKworICByZXR1cm4gU3RyaW5nKHNvdXJjZS5zdWJzdHIoMCwgbWF0
Y2hQb3MpICsgcmVwbGFjZW1lbnRTdHJpbmcgKyBzb3VyY2Uuc3Vic3RyKG1hdGNoUG9zICsgbWF0
Y2hMZW4pKTsKIH0KIAogLy8gRUNNQSAxNS41LjQuMiAtIDE1LjUuNC4yMAo=
</data>
<flag name="review"
          id="52"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2504</attachid>
            <date>2005-06-20 10:09:29 -0700</date>
            <delta_ts>2005-06-20 10:14:21 -0700</delta_ts>
            <desc>Address comments</desc>
            <filename>string-replace-function-2.diff</filename>
            <type>text/plain</type>
            <size>3846</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcxNApkaWZmIC11IC1wIC11
IC1yMS43MTQgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNi8xOSAwNjoyMTozMAkxLjcx
NAorKysgQ2hhbmdlTG9nCTIwMDUvMDYvMjAgMTc6MDM6MzEKQEAgLTEsMyArMSwxMSBAQAorMjAw
NS0wNi0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAbWFjLmNvbT4KKworCUZpeGVkOiA8
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjk0PgorCisg
ICAgICAgICoga2pzL3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAocmVwbGFjZSk6CisJSGFu
ZGxlIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgcmVwbGFjZSBiZWluZyBhIGZ1bmN0aW9uLgorCiAy
MDA1LTA2LTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IGtqcy9zdHJpbmdfb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3Qu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM0CmRpZmYgLXUgLXAgLXUgLXIxLjM0IGtqcy9z
dHJpbmdfb2JqZWN0LmNwcAotLS0ga2pzL3N0cmluZ19vYmplY3QuY3BwCTIwMDUvMDQvMjkgMDA6
MjI6NTUJMS4zNAorKysga2pzL3N0cmluZ19vYmplY3QuY3BwCTIwMDUvMDYvMjAgMTc6MDM6MzgK
QEAgLTI2NCw2ICsyNjQsMTQgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNr
cmVmZQogCiBzdGF0aWMgVmFsdWUgcmVwbGFjZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IFVTdHJp
bmcgJnNvdXJjZSwgY29uc3QgVmFsdWUgJnBhdHRlcm4sIGNvbnN0IFZhbHVlICZyZXBsYWNlbWVu
dCkKIHsKKyAgT2JqZWN0SW1wICpyZXBsYWNlbWVudEZ1bmN0aW9uID0gMDsKKyAgVVN0cmluZyBy
ZXBsYWNlbWVudFN0cmluZzsKKworICBpZiAocmVwbGFjZW1lbnQudHlwZSgpID09IE9iamVjdFR5
cGUgJiYgcmVwbGFjZW1lbnQudG9PYmplY3QoZXhlYykuaW1wbGVtZW50c0NhbGwoKSkKKyAgICBy
ZXBsYWNlbWVudEZ1bmN0aW9uID0gcmVwbGFjZW1lbnQudG9PYmplY3QoZXhlYykuaW1wKCk7Cisg
IGVsc2UKKyAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMp
OworCiAgIGlmIChwYXR0ZXJuLnR5cGUoKSA9PSBPYmplY3RUeXBlICYmIHBhdHRlcm4udG9PYmpl
Y3QoZXhlYykuaW5oZXJpdHMoJlJlZ0V4cEltcDo6aW5mbykpIHsKICAgICBSZWdFeHBJbXAqIGlt
cCA9IHN0YXRpY19jYXN0PFJlZ0V4cEltcCAqPiggcGF0dGVybi50b09iamVjdChleGVjKS5pbXAo
KSApOwogICAgIFJlZ0V4cCAqcmVnID0gaW1wLT5yZWdFeHAoKTsKQEAgLTI3MSw4ICsyNzksNiBA
QCBzdGF0aWMgVmFsdWUgcmVwbGFjZShFeGVjU3RhdGUgKmV4ZWMsIGNvCiAKICAgICBSZWdFeHBP
YmplY3RJbXAqIHJlZ0V4cE9iaiA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdEltcCo+KGV4ZWMt
PmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluUmVnRXhwKCkuaW1wKCkpOwogCi0gICAgVVN0
cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMpOwotCiAg
ICAgaW50IG1hdGNoSW5kZXggPSAwOwogICAgIGludCBsYXN0SW5kZXggPSAwOwogICAgIGludCBz
dGFydFBvc2l0aW9uID0gMDsKQEAgLTI5NSw2ICszMDEsMjYgQEAgc3RhdGljIFZhbHVlIHJlcGxh
Y2UoRXhlY1N0YXRlICpleGVjLCBjbwogCiAgICAgICBwdXNoU291cmNlUmFuZ2Uoc291cmNlUmFu
Z2VzLCBzb3VyY2VSYW5nZUNvdW50LCBzb3VyY2VSYW5nZUNhcGFjaXR5LCBVU3RyaW5nOjpSYW5n
ZShsYXN0SW5kZXgsIG1hdGNoSW5kZXggLSBsYXN0SW5kZXgpKTsKIAorICAgICAgaWYgKHJlcGxh
Y2VtZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICBpbnQgY29tcGxldGVNYXRjaFN0YXJ0ID0gKCpv
dmVjdG9yKVswXTsKKyAgICAgICAgICBMaXN0IGFyZ3M7CisKKyAgICAgICAgICBhcmdzLmFwcGVu
ZChWYWx1ZShtYXRjaFN0cmluZykpOworICAgICAgICAgIAorICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCByZWctPnN1YlBhdHRlcm5zKCk7IGkrKykgeworICAgICAgICAgICAgICBp
bnQgbWF0Y2hTdGFydCA9ICgqb3ZlY3RvcilbKGkgKyAxKSAqIDJdOworICAgICAgICAgICAgICBp
bnQgbWF0Y2hMZW4gPSAoKm92ZWN0b3IpWyhpICsgMSkgKiAyICsgMV0gLSBtYXRjaFN0YXJ0Owor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYXJncy5hcHBlbmQoVmFsdWUoc291cmNlLnN1
YnN0cihtYXRjaFN0YXJ0LCBtYXRjaExlbikpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgCisg
ICAgICAgICAgYXJncy5hcHBlbmQoVmFsdWUoY29tcGxldGVNYXRjaFN0YXJ0KSk7CisgICAgICAg
ICAgYXJncy5hcHBlbmQoVmFsdWUoc291cmNlKSk7CisKKyAgICAgICAgICByZXBsYWNlbWVudFN0
cmluZyA9IHJlcGxhY2VtZW50RnVuY3Rpb24tPmNhbGwoZXhlYywgZXhlYy0+ZHluYW1pY0ludGVy
cHJldGVyKCktPmdsb2JhbE9iamVjdCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncykudG9TdHJpbmcoZXhlYyk7CisgICAgICB9
CisgICAgICAKICAgICAgIFVTdHJpbmcgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCA9IHN1YnN0aXR1
dGVCYWNrcmVmZXJlbmNlcyhyZXBsYWNlbWVudFN0cmluZywgc291cmNlLCBvdmVjdG9yLCByZWcp
OwogICAgICAgcHVzaFJlcGxhY2VtZW50KHJlcGxhY2VtZW50cywgcmVwbGFjZW1lbnRDb3VudCwg
cmVwbGFjZW1lbnRDYXBhY2l0eSwgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCk7CiAKQEAgLTMyNyw3
ICszNTMsMTkgQEAgc3RhdGljIFZhbHVlIHJlcGxhY2UoRXhlY1N0YXRlICpleGVjLCBjbwogICAv
LyBEbyB0aGUgcmVwbGFjZW1lbnQKICAgaWYgKG1hdGNoUG9zID09IC0xKQogICAgIHJldHVybiBT
dHJpbmcoc291cmNlKTsKLSAgcmV0dXJuIFN0cmluZyhzb3VyY2Uuc3Vic3RyKDAsIG1hdGNoUG9z
KSArIHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMpICsgc291cmNlLnN1YnN0cihtYXRjaFBvcyAr
IG1hdGNoTGVuKSk7CisgIAorICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbikgeworICAgICAgTGlz
dCBhcmdzOworICAgICAgCisgICAgICBhcmdzLmFwcGVuZChWYWx1ZShzb3VyY2Uuc3Vic3RyICht
YXRjaFBvcywgbWF0Y2hMZW4pKSk7CisgICAgICBhcmdzLmFwcGVuZChWYWx1ZShtYXRjaFBvcykp
OworICAgICAgYXJncy5hcHBlbmQoVmFsdWUoc291cmNlKSk7CisgICAgICAKKyAgICAgIHJlcGxh
Y2VtZW50U3RyaW5nID0gcmVwbGFjZW1lbnRGdW5jdGlvbi0+Y2FsbChleGVjLCBleGVjLT5keW5h
bWljSW50ZXJwcmV0ZXIoKS0+Z2xvYmFsT2JqZWN0KCksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MpLnRvU3RyaW5nKGV4ZWMpOworICB9
CisKKyAgcmV0dXJuIFN0cmluZyhzb3VyY2Uuc3Vic3RyKDAsIG1hdGNoUG9zKSArIHJlcGxhY2Vt
ZW50U3RyaW5nICsgc291cmNlLnN1YnN0cihtYXRjaFBvcyArIG1hdGNoTGVuKSk7CiB9CiAKIC8v
IEVDTUEgMTUuNS40LjIgLSAxNS41LjQuMjAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2505</attachid>
            <date>2005-06-20 10:14:21 -0700</date>
            <delta_ts>2005-06-20 11:20:09 -0700</delta_ts>
            <desc>Remove the space after substr</desc>
            <filename>string-replace-function-2.diff</filename>
            <type>text/plain</type>
            <size>3845</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcxNApkaWZmIC11IC1wIC11
IC1yMS43MTQgQ2hhbmdlTG9nCi0tLSBDaGFuZ2VMb2cJMjAwNS8wNi8xOSAwNjoyMTozMAkxLjcx
NAorKysgQ2hhbmdlTG9nCTIwMDUvMDYvMjAgMTc6MTE6NDMKQEAgLTEsMyArMSwxMSBAQAorMjAw
NS0wNi0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAbWFjLmNvbT4KKworCUZpeGVkOiA8
aHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjk0PgorCisg
ICAgICAgICoga2pzL3N0cmluZ19vYmplY3QuY3BwOgorICAgICAgICAocmVwbGFjZSk6CisJSGFu
ZGxlIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgcmVwbGFjZSBiZWluZyBhIGZ1bmN0aW9uLgorCiAy
MDA1LTA2LTE4ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IGtqcy9zdHJpbmdfb2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvSmF2YVNjcmlwdENvcmUva2pzL3N0cmluZ19vYmplY3Qu
Y3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM0CmRpZmYgLXUgLXAgLXUgLXIxLjM0IGtqcy9z
dHJpbmdfb2JqZWN0LmNwcAotLS0ga2pzL3N0cmluZ19vYmplY3QuY3BwCTIwMDUvMDQvMjkgMDA6
MjI6NTUJMS4zNAorKysga2pzL3N0cmluZ19vYmplY3QuY3BwCTIwMDUvMDYvMjAgMTc6MTE6NDkK
QEAgLTI2NCw2ICsyNjQsMTQgQEAgc3RhdGljIGlubGluZSBVU3RyaW5nIHN1YnN0aXR1dGVCYWNr
cmVmZQogCiBzdGF0aWMgVmFsdWUgcmVwbGFjZShFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IFVTdHJp
bmcgJnNvdXJjZSwgY29uc3QgVmFsdWUgJnBhdHRlcm4sIGNvbnN0IFZhbHVlICZyZXBsYWNlbWVu
dCkKIHsKKyAgT2JqZWN0SW1wICpyZXBsYWNlbWVudEZ1bmN0aW9uID0gMDsKKyAgVVN0cmluZyBy
ZXBsYWNlbWVudFN0cmluZzsKKworICBpZiAocmVwbGFjZW1lbnQudHlwZSgpID09IE9iamVjdFR5
cGUgJiYgcmVwbGFjZW1lbnQudG9PYmplY3QoZXhlYykuaW1wbGVtZW50c0NhbGwoKSkKKyAgICBy
ZXBsYWNlbWVudEZ1bmN0aW9uID0gcmVwbGFjZW1lbnQudG9PYmplY3QoZXhlYykuaW1wKCk7Cisg
IGVsc2UKKyAgICByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMp
OworCiAgIGlmIChwYXR0ZXJuLnR5cGUoKSA9PSBPYmplY3RUeXBlICYmIHBhdHRlcm4udG9PYmpl
Y3QoZXhlYykuaW5oZXJpdHMoJlJlZ0V4cEltcDo6aW5mbykpIHsKICAgICBSZWdFeHBJbXAqIGlt
cCA9IHN0YXRpY19jYXN0PFJlZ0V4cEltcCAqPiggcGF0dGVybi50b09iamVjdChleGVjKS5pbXAo
KSApOwogICAgIFJlZ0V4cCAqcmVnID0gaW1wLT5yZWdFeHAoKTsKQEAgLTI3MSw4ICsyNzksNiBA
QCBzdGF0aWMgVmFsdWUgcmVwbGFjZShFeGVjU3RhdGUgKmV4ZWMsIGNvCiAKICAgICBSZWdFeHBP
YmplY3RJbXAqIHJlZ0V4cE9iaiA9IHN0YXRpY19jYXN0PFJlZ0V4cE9iamVjdEltcCo+KGV4ZWMt
PmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluUmVnRXhwKCkuaW1wKCkpOwogCi0gICAgVVN0
cmluZyByZXBsYWNlbWVudFN0cmluZyA9IHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMpOwotCiAg
ICAgaW50IG1hdGNoSW5kZXggPSAwOwogICAgIGludCBsYXN0SW5kZXggPSAwOwogICAgIGludCBz
dGFydFBvc2l0aW9uID0gMDsKQEAgLTI5NSw2ICszMDEsMjYgQEAgc3RhdGljIFZhbHVlIHJlcGxh
Y2UoRXhlY1N0YXRlICpleGVjLCBjbwogCiAgICAgICBwdXNoU291cmNlUmFuZ2Uoc291cmNlUmFu
Z2VzLCBzb3VyY2VSYW5nZUNvdW50LCBzb3VyY2VSYW5nZUNhcGFjaXR5LCBVU3RyaW5nOjpSYW5n
ZShsYXN0SW5kZXgsIG1hdGNoSW5kZXggLSBsYXN0SW5kZXgpKTsKIAorICAgICAgaWYgKHJlcGxh
Y2VtZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICBpbnQgY29tcGxldGVNYXRjaFN0YXJ0ID0gKCpv
dmVjdG9yKVswXTsKKyAgICAgICAgICBMaXN0IGFyZ3M7CisKKyAgICAgICAgICBhcmdzLmFwcGVu
ZChWYWx1ZShtYXRjaFN0cmluZykpOworICAgICAgICAgIAorICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCByZWctPnN1YlBhdHRlcm5zKCk7IGkrKykgeworICAgICAgICAgICAgICBp
bnQgbWF0Y2hTdGFydCA9ICgqb3ZlY3RvcilbKGkgKyAxKSAqIDJdOworICAgICAgICAgICAgICBp
bnQgbWF0Y2hMZW4gPSAoKm92ZWN0b3IpWyhpICsgMSkgKiAyICsgMV0gLSBtYXRjaFN0YXJ0Owor
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgYXJncy5hcHBlbmQoVmFsdWUoc291cmNlLnN1
YnN0cihtYXRjaFN0YXJ0LCBtYXRjaExlbikpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgCisg
ICAgICAgICAgYXJncy5hcHBlbmQoVmFsdWUoY29tcGxldGVNYXRjaFN0YXJ0KSk7CisgICAgICAg
ICAgYXJncy5hcHBlbmQoVmFsdWUoc291cmNlKSk7CisKKyAgICAgICAgICByZXBsYWNlbWVudFN0
cmluZyA9IHJlcGxhY2VtZW50RnVuY3Rpb24tPmNhbGwoZXhlYywgZXhlYy0+ZHluYW1pY0ludGVy
cHJldGVyKCktPmdsb2JhbE9iamVjdCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncykudG9TdHJpbmcoZXhlYyk7CisgICAgICB9
CisgICAgICAKICAgICAgIFVTdHJpbmcgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCA9IHN1YnN0aXR1
dGVCYWNrcmVmZXJlbmNlcyhyZXBsYWNlbWVudFN0cmluZywgc291cmNlLCBvdmVjdG9yLCByZWcp
OwogICAgICAgcHVzaFJlcGxhY2VtZW50KHJlcGxhY2VtZW50cywgcmVwbGFjZW1lbnRDb3VudCwg
cmVwbGFjZW1lbnRDYXBhY2l0eSwgc3Vic3RpdHV0ZWRSZXBsYWNlbWVudCk7CiAKQEAgLTMyNyw3
ICszNTMsMTkgQEAgc3RhdGljIFZhbHVlIHJlcGxhY2UoRXhlY1N0YXRlICpleGVjLCBjbwogICAv
LyBEbyB0aGUgcmVwbGFjZW1lbnQKICAgaWYgKG1hdGNoUG9zID09IC0xKQogICAgIHJldHVybiBT
dHJpbmcoc291cmNlKTsKLSAgcmV0dXJuIFN0cmluZyhzb3VyY2Uuc3Vic3RyKDAsIG1hdGNoUG9z
KSArIHJlcGxhY2VtZW50LnRvU3RyaW5nKGV4ZWMpICsgc291cmNlLnN1YnN0cihtYXRjaFBvcyAr
IG1hdGNoTGVuKSk7CisgIAorICBpZiAocmVwbGFjZW1lbnRGdW5jdGlvbikgeworICAgICAgTGlz
dCBhcmdzOworICAgICAgCisgICAgICBhcmdzLmFwcGVuZChWYWx1ZShzb3VyY2Uuc3Vic3RyKG1h
dGNoUG9zLCBtYXRjaExlbikpKTsKKyAgICAgIGFyZ3MuYXBwZW5kKFZhbHVlKG1hdGNoUG9zKSk7
CisgICAgICBhcmdzLmFwcGVuZChWYWx1ZShzb3VyY2UpKTsKKyAgICAgIAorICAgICAgcmVwbGFj
ZW1lbnRTdHJpbmcgPSByZXBsYWNlbWVudEZ1bmN0aW9uLT5jYWxsKGV4ZWMsIGV4ZWMtPmR5bmFt
aWNJbnRlcnByZXRlcigpLT5nbG9iYWxPYmplY3QoKSwgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncykudG9TdHJpbmcoZXhlYyk7CisgIH0K
KworICByZXR1cm4gU3RyaW5nKHNvdXJjZS5zdWJzdHIoMCwgbWF0Y2hQb3MpICsgcmVwbGFjZW1l
bnRTdHJpbmcgKyBzb3VyY2Uuc3Vic3RyKG1hdGNoUG9zICsgbWF0Y2hMZW4pKTsKIH0KIAogLy8g
RUNNQSAxNS41LjQuMiAtIDE1LjUuNC4yMAo=
</data>
<flag name="review"
          id="58"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>