<?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>9350</bug_id>
          
          <creation_ts>2006-06-07 20:14:13 -0700</creation_ts>
          <short_desc>Use pathcmp() when sorting paths in svn-create-patch</short_desc>
          <delta_ts>2006-06-09 12:01:16 -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>Tools / Tests</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>45115</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-07 20:14:13 -0700</bug_when>
    <thetext>Per Bug 9322 Comment #2, Darin would like the sort() methods in svn-create-path to use pathcmp().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45116</commentid>
    <comment_count>1</comment_count>
      <attachid>8764</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-07 20:35:58 -0700</bug_when>
    <thetext>Created attachment 8764
Patch v1

- Moved pathcmp() and helper methods to WebKit::Util module.
- Created WebKitTools/Scripts/lib directory for modules.  (I hate *.pm files inside the Scripts directory.)
- Changed svn-create-patch to use pathcmp() subroutine.
- Various Perl clean-up in svn-create-patch (subroutine prototypes; added -h command-line switch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45130</commentid>
    <comment_count>2</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-08 04:49:10 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=8764) [edit]
&gt; Patch v1

- Also rewrote splitpath() to use File::Basename subs basename() and dirname(), although I couldn&apos;t find a variable representing the per-platform path separator, e.g., something like $File::Spec::Separator.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45147</commentid>
    <comment_count>3</comment_count>
      <attachid>8764</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-06-08 09:21:16 -0700</bug_when>
    <thetext>Comment on attachment 8764
Patch v1

I&apos;m not entirely happy with the name &quot;Util&quot;, with the idea of creating a &quot;lib&quot; subdirectory of the Scripts directory, or with moving these functions to a library. On the other hand, I see the appeal of sharing the code.

1) In general, I&apos;m not at a fan of using abbreviations unless the full word is too long to be practical to use.

2) I don&apos;t like the name &quot;Utilities&quot;. That&apos;s a catch-all term and it&apos;s hard to know what things are or are not utilities. For example, I&apos;d prefer a name like Sorting or SortingFunctions for a library of functions for sorting.

3) Up until this point the only library we&apos;ve had is webkitdirs. As I created scripts I went out of my way to keep each the number of scripts small, keep each script as small as possible and relatively independent; I hope this makes them relatively hackable.

Given all of that, I have mixed feelings about the cost/benefit of the patch, even though it was my suggestion to use the pathcmp sort function.

I guess I&apos;ll mark this review+ despite my reservations, but please consider my comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45153</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-08 10:07:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I&apos;m not entirely happy with the name &quot;Util&quot;, with the idea of creating a &quot;lib&quot;
&gt; subdirectory of the Scripts directory, or with moving these functions to a
&gt; library. On the other hand, I see the appeal of sharing the code.

I usually try to avoid code duplication (except when it interferes with readability), hence the reason for creating a Perl module.  If you don&apos;t mind me copying the code into the svn-create-patch script, then I&apos;ll just do that instead.  (Had I know that sooner, it would have saved me a lot of work.  I almost wrote full &quot;pod&quot; documentation for all the functions. :)

&gt; 3) Up until this point the only library we&apos;ve had is webkitdirs. As I created
&gt; scripts I went out of my way to keep each the number of scripts small, keep
&gt; each script as small as possible and relatively independent; I hope this makes
&gt; them relatively hackable.

Actually, there are two modules now:

$ ls *.pm
SpacingHeuristics.pm    webkitdirs.pm

I understand the desire to keep the scripts hackable, although I didn&apos;t know it at the time.  I&apos;ve done some Perl development in the past, and in my world, modules should go into a library (&apos;lib&apos;) directory.  That&apos;s a contradiction of the &apos;hackability&apos; directive, though.

I&apos;ll just rework the patch tonight to copy the functions to svn-create-patch.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45188</commentid>
    <comment_count>5</comment_count>
      <attachid>8782</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-09 02:34:29 -0700</bug_when>
    <thetext>Created attachment 8782
Patch v2

New in Patch v2:

- Nothing from Patch v1 was kept except for the code clean-up in svn-create-patch (subroutine prototypes and addition of -h|--help switch and printUsage()).
- Modified splitpath() in run-webkit-tests to use File::Basename methods instead of regex.
- Copied numericcmp(), pathcmp() and splitpath() from run-webkit-tests to svn-create-path.
- Use pathcmp() on sort() functions in svn-create-path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45195</commentid>
    <comment_count>6</comment_count>
      <attachid>8785</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-06-09 07:34:57 -0700</bug_when>
    <thetext>Created attachment 8785
Patch v3

Same as Patch v3 plus:

- Inlined printUsage() method which was only used once and was poorly named.
- Renamed $help variable to $showHelp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45205</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2006-06-09 12:01:16 -0700</bug_when>
    <thetext>Committed revision 14781.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8764</attachid>
            <date>2006-06-07 20:35:58 -0700</date>
            <delta_ts>2006-06-08 10:07:46 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-9350-v1.diff</filename>
            <type>text/plain</type>
            <size>8970</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0NzY3KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDYtMDYtMDcgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MzUwCisgICAgICAgIFVzZSBwYXRoY21wKCkgd2hlbiBzb3J0aW5nIHBhdGhzIGluIHN2bi1j
cmVhdGUtcGF0Y2gKKworICAgICAgICAqIFNjcmlwdHMvbGliOiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL2xpYi9XZWJLaXQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvbGliL1dlYktpdC9V
dGlsLnBtOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6IE1vdmVk
IHBhdGhjbXAoKSBhbmQgaGVscGVyIG1ldGhvZHMgdG8gbGliL1dlYktpdC9VdGlsLnBtLgorICAg
ICAgICAqIFNjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaDogQ2hhbmdlZCBzb3J0KCkgbWV0aG9kcyB0
byB1c2UgcGF0aGNtcCgpLiAgQWRkZWQgc3Vicm91dGluZSBwcm90b3R5cGVzLgorICAgICAgICBB
ZGRlZCAtaCBjb21tYW5kLWxpbmUgc3dpdGNoIGFuZCBwcmludFVzYWdlKCkgc3Vicm91dGluZS4K
KwogMjAwNi0wNi0wNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBkYXJpbi4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdl
YmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMJKHJldmlzaW9uIDE0NzY3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0
LXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNyArNTcsMTYgQEAgdXNlIFRpbWU6OkhpUmVz
IHF3KHRpbWUpOwogCiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0ZGlyczsKK3Vz
ZSBsaWIgIiRGaW5kQmluOjpCaW4vbGliIjsKK3VzZSBXZWJLaXQ6OlV0aWw7CiAKIHN1YiBjbG9z
ZUR1bXBSZW5kZXJUcmVlKCk7CiBzdWIgY2xvc2VIVFRQRCgpOwogc3ViIGNvdW50QW5kUHJpbnRM
ZWFrcygkJCQpOwogc3ViIGZpbGVOYW1lV2l0aE51bWJlcigkJCk7Ci1zdWIgbnVtZXJpY2NtcCgk
JCk7CiBzdWIgb3BlbkR1bXBSZW5kZXJUcmVlSWZOZWVkZWQoKTsKIHN1YiBvcGVuSFRUUERJZk5l
ZWRlZCgpOwotc3ViIHBhdGhjbXAoJCQpOwogc3ViIHNsb3dlc3RjbXAoJCQpOwotc3ViIHNwbGl0
cGF0aCgkKTsKIAogIyBBcmd1bWVudCBoYW5kbGluZwogbXkgJGNoZWNrTGVha3MgPSAnJzsKQEAg
LTY1NSw1NSArNjU0LDYgQEAgc3ViIGNvdW50QW5kUHJpbnRMZWFrcygkJCQpCiAgICAgcmV0dXJu
ICRhZGp1c3RlZENvdW50OwogfQogCi0jIEJyZWFrIHVwIGEgcGF0aCBpbnRvIHRoZSBkaXJlY3Rv
cnkgKHdpdGggc2xhc2gpIGFuZCBiYXNlIG5hbWUuCi1zdWIgc3BsaXRwYXRoKCQpCi17Ci0gICAg
bXkgKCRwYXRoKSA9IEBfOwotCi0gICAgcmV0dXJuICgkMSwgJDIpIGlmICRwYXRoID1+IG18Xigu
Ki8pKFteL10rKSR8OwotICAgIHJldHVybiAoIiIsICRwYXRoKTsKLX0KLQotIyBTb3J0IGZpcnN0
IGJ5IGRpcmVjdG9yeSwgdGhlbiBieSBmaWxlLCBzbyBhbGwgcGF0aHMgaW4gb25lIGRpcmVjdG9y
eSBhcmUgZ3JvdXBlZAotIyByYXRoZXIgdGhhbiBiZWluZyBpbnRlcnNwZXJzZWQgd2l0aCBpdGVt
cyBmcm9tIHN1YmRpcmVjdG9yaWVzLgotIyBVc2UgbnVtZXJpY2NtcCB0byBzb3J0IGRpcmVjdG9y
eSBhbmQgZmlsZW5hbWVzIHRvIG1ha2Ugb3JkZXIgbG9naWNhbC4KLXN1YiBwYXRoY21wKCQkKQot
ewotICAgIG15ICgkcGF0aGEsICRwYXRoYikgPSBAXzsKLQotICAgIG15ICgkZGlyYSwgJG5hbWVh
KSA9IHNwbGl0cGF0aCgkcGF0aGEpOwotICAgIG15ICgkZGlyYiwgJG5hbWViKSA9IHNwbGl0cGF0
aCgkcGF0aGIpOwotCi0gICAgcmV0dXJuIG51bWVyaWNjbXAoJGRpcmEsICRkaXJiKSBpZiAkZGly
YSBuZSAkZGlyYjsKLSAgICByZXR1cm4gbnVtZXJpY2NtcCgkbmFtZWEsICRuYW1lYik7Ci19Ci0K
LSMgU29ydCBudW1lcmljIHBhcnRzIG9mIHN0cmluZ3MgYXMgbnVtYmVycywgb3RoZXIgcGFydHMg
YXMgc3RyaW5ncy4KLSMgTWFrZXMgMS4zMyBjb21lIGFmdGVyIDEuMywgd2hpY2ggaXMgY29vbC4K
LXN1YiBudW1lcmljY21wKCQkKQotewotICAgIG15ICgkYWEsICRiYikgPSBAXzsKLQotICAgIG15
IEBhID0gc3BsaXQgLyhcZCspLywgJGFhOwotICAgIG15IEBiID0gc3BsaXQgLyhcZCspLywgJGJi
OwotCi0gICAgIyBDb21wYXJlIG9uZSBjaHVuayBhdCBhIHRpbWUuCi0gICAgIyBFYWNoIGNodW5r
IGlzIGVpdGhlciBhbGwgbnVtZXJpYyBkaWdpdHMsIG9yIGFsbCBub3QgbnVtZXJpYyBkaWdpdHMu
Ci0gICAgd2hpbGUgKEBhICYmIEBiKSB7Ci0gICAgICAgIG15ICRhID0gc2hpZnQgQGE7Ci0gICAg
ICAgIG15ICRiID0gc2hpZnQgQGI7Ci0gICAgICAgIAotICAgICAgICAjIFVzZSBudW1lcmljIGNv
bXBhcmlzb24gaWYgY2h1bmtzIGFyZSBub24tZXF1YWwgbnVtYmVycy4KLSAgICAgICAgcmV0dXJu
ICRhIDw9PiAkYiBpZiAkYSA9fiAvXlxkLyAmJiAkYiA9fiAvXlxkLyAmJiAkYSAhPSAkYjsKLQot
ICAgICAgICAjIFVzZSBzdHJpbmcgY29tcGFyaXNvbiBpZiBjaHVua3MgYXJlIGFueSBvdGhlciBr
aW5kIG9mIG5vbi1lcXVhbCBzdHJpbmcuCi0gICAgICAgIHJldHVybiAkYSBjbXAgJGIgaWYgJGEg
bmUgJGI7Ci0gICAgfQotICAgIAotICAgICMgT25lIG9mIHRoZSB0d28gaXMgbm93IGVtcHR5OyBj
b21wYXJlIGxlbmd0aHMgZm9yIHJlc3VsdCBpbiB0aGlzIGNhc2UuCi0gICAgcmV0dXJuIEBhIDw9
PiBAYjsKLX0KLQogIyBTb3J0IHNsb3dlc3QgdGVzdHMgZmlyc3QuCiBzdWIgc2xvd2VzdGNtcCgk
JCkKIHsKSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNyZWF0ZS1wYXRjaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1jcmVhdGUtcGF0Y2gJKHJldmlzaW9uIDE0
NzY3KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoCSh3b3JraW5nIGNv
cHkpCkBAIC00MCwxNyArNDAsMzEgQEAKICMgICBIYW5kbGUgbW92ZWQgZmlsZXMuCiAKIHVzZSBz
dHJpY3Q7Cit1c2Ugd2FybmluZ3M7CiAKIHVzZSBDb25maWc7CiB1c2UgQ3dkOwogdXNlIEZpbGU6
OkJhc2VuYW1lOwogdXNlIEZpbGU6OlNwZWM7CiB1c2UgRmlsZTo6c3RhdDsKK3VzZSBGaW5kQmlu
OwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBNSU1FOjpCYXNlNjQ7CiB1c2UgUE9TSVggcXcoOmVy
cm5vX2gpOwogdXNlIFRpbWU6OmdtdGltZTsKIAordXNlIGxpYiAiJEZpbmRCaW46OkJpbi9saWIi
OwordXNlIFdlYktpdDo6VXRpbDsKKworc3ViIGNhbm9uaWNhbGl6ZVBhdGgoJCk7CitzdWIgZ2Vu
ZXJhdGVEaWZmKCQpOworc3ViIGdlbmVyYXRlRmlsZUxpc3QoJFwlXCUpOworc3ViIG91dHB1dEJp
bmFyeUNvbnRlbnQoJCk7CitzdWIgcHJpbnRVc2FnZSgpOworCitteSAkaGVscDsKK3ByaW50VXNh
Z2UoKSBpZiAoIUdldE9wdGlvbnMoImhlbHAiID0+IFwkaGVscCkgfHwgJGhlbHApOworCiBteSAk
c3RhcnREaXIgPSBnZXRjd2QoKTsKIG15ICVwYXRoczsKIApAQCAtOTIsMjEgKzEwNiwyMSBAQCBp
ZiAoIUBBUkdWKSB7CiBteSAldGV4dEZpbGVzOwogbXkgJWJpbmFyeUZpbGVzOwogZm9yIG15ICRw
YXRoIChrZXlzICVwYXRocykgewotICAgIGdlbmVyYXRlRmlsZUxpc3QoJHBhdGgsIFwldGV4dEZp
bGVzLCBcJWJpbmFyeUZpbGVzKTsKKyAgICBnZW5lcmF0ZUZpbGVMaXN0KCRwYXRoLCAldGV4dEZp
bGVzLCAlYmluYXJ5RmlsZXMpOwogfQogCiAjIEdlbmVyYXRlIHRoZSBkaWZmIGZvciB0ZXh0IGZp
bGVzLCB0aGVuIGJpbmFyeSBmaWxlcywgZm9yIGVhc3kgcmV2aWV3aW5nCi1mb3IgbXkgJGZpbGUg
KHNvcnQga2V5cyAldGV4dEZpbGVzKSB7Citmb3IgbXkgJGZpbGUgKHNvcnQgcGF0aGNtcCBrZXlz
ICV0ZXh0RmlsZXMpIHsKICAgICBnZW5lcmF0ZURpZmYoJGZpbGUpOwogfQotZm9yIG15ICRmaWxl
IChzb3J0IGtleXMgJWJpbmFyeUZpbGVzKSB7Citmb3IgbXkgJGZpbGUgKHNvcnQgcGF0aGNtcCBr
ZXlzICViaW5hcnlGaWxlcykgewogICAgIGdlbmVyYXRlRGlmZigkZmlsZSk7CiB9CiAKIGV4aXQg
MDsKIAogCi1zdWIgY2Fub25pY2FsaXplUGF0aAorc3ViIGNhbm9uaWNhbGl6ZVBhdGgoJCkKIHsK
ICAgICBteSAoJGZpbGUpID0gQF87CiAKQEAgLTEyNSw3ICsxMzksNyBAQCBzdWIgY2Fub25pY2Fs
aXplUGF0aAogICAgIHJldHVybiAoJCNkaXJzID49IDApID8gRmlsZTo6U3BlYy0+Y2F0ZGlyKEBk
aXJzKSA6ICIuIjsKIH0KIAotc3ViIGdlbmVyYXRlRGlmZgorc3ViIGdlbmVyYXRlRGlmZigkKQog
ewogICAgIG15ICgkZmlsZSkgPSBAXzsKICAgICBteSAkZXJyb3JzID0gIiI7CkBAIC0xNDMsNyAr
MTU3LDcgQEAgc3ViIGdlbmVyYXRlRGlmZgogICAgIHByaW50IFNUREVSUiAkZXJyb3JzOwogfQog
Ci1zdWIgZ2VuZXJhdGVGaWxlTGlzdAorc3ViIGdlbmVyYXRlRmlsZUxpc3QoJFwlXCUpCiB7CiAg
ICAgbXkgKCRwYXRoLCAkdGV4dEZpbGVzLCAkYmluYXJ5RmlsZXMpID0gQF87CiAgICAgbXkgJGlu
ZGV4UGF0aDsKQEAgLTE3Nyw3ICsxOTEsNyBAQCBzdWIgZ2VuZXJhdGVGaWxlTGlzdAogICAgIH0K
IH0KIAotc3ViIG91dHB1dEJpbmFyeUNvbnRlbnQKK3N1YiBvdXRwdXRCaW5hcnlDb250ZW50KCQp
CiB7CiAgICAgbXkgKCRwYXRoKSA9IEBfOwogICAgICMgRGVsZXRpb24KQEAgLTE5MiwzICsyMDYs
OCBAQCBzdWIgb3V0cHV0QmluYXJ5Q29udGVudAogICAgIHByaW50ICJcbiI7CiB9CiAKK3N1YiBw
cmludFVzYWdlKCkKK3sKKyAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIiBbLWh8LS1o
ZWxwXSBzdm5kaXIxIFtzdm5kaXIyIC4uLl1cbiI7CisgICAgZXhpdCAxOworfQpJbmRleDogV2Vi
S2l0VG9vbHMvU2NyaXB0cy9saWIvV2ViS2l0L1V0aWwucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvU2NyaXB0cy9saWIvV2ViS2l0L1V0aWwucG0JKHJldmlzaW9uIDApCisrKyBXZWJLaXRU
b29scy9TY3JpcHRzL2xpYi9XZWJLaXQvVXRpbC5wbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLiAKKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3BhY2thZ2UgV2ViS2l0
OjpVdGlsOworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOworCit1c2UgRmlsZTo6QmFzZW5h
bWU7CisKK0JFR0lOIHsKKyAgICB1c2UgRXhwb3J0ZXIgICAoKTsKKyAgICBvdXIgKCRWRVJTSU9O
LCBASVNBLCBARVhQT1JULCBARVhQT1JUX09LLCAlRVhQT1JUX1RBR1MpOworICAgICRWRVJTSU9O
ICAgICA9IDEuMDA7CisgICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOworICAgIEBFWFBP
UlQgICAgICA9IHF3KCZwYXRoY21wKTsKKyAgICAlRVhQT1JUX1RBR1MgPSAoQUxMID0+IFtxdygm
cGF0aGNtcCldKTsKKyAgICBARVhQT1JUX09LICAgPSBxdygpOworfQorCitvdXIgQEVYUE9SVF9P
SzsKKworIyBTb3J0IG51bWVyaWMgcGFydHMgb2Ygc3RyaW5ncyBhcyBudW1iZXJzLCBvdGhlciBw
YXJ0cyBhcyBzdHJpbmdzLgorIyBNYWtlcyAxLjMzIGNvbWUgYWZ0ZXIgMS4zLCB3aGljaCBpcyBj
b29sLgorc3ViIG51bWVyaWNjbXAoJCQpCit7CisgICAgbXkgKCRhYSwgJGJiKSA9IEBfOworCisg
ICAgbXkgQGEgPSBzcGxpdCAvKFxkKykvLCAkYWE7CisgICAgbXkgQGIgPSBzcGxpdCAvKFxkKykv
LCAkYmI7CisKKyAgICAjIENvbXBhcmUgb25lIGNodW5rIGF0IGEgdGltZS4KKyAgICAjIEVhY2gg
Y2h1bmsgaXMgZWl0aGVyIGFsbCBudW1lcmljIGRpZ2l0cywgb3IgYWxsIG5vdCBudW1lcmljIGRp
Z2l0cy4KKyAgICB3aGlsZSAoQGEgJiYgQGIpIHsKKyAgICAgICAgbXkgJGEgPSBzaGlmdCBAYTsK
KyAgICAgICAgbXkgJGIgPSBzaGlmdCBAYjsKKyAgICAgICAgCisgICAgICAgICMgVXNlIG51bWVy
aWMgY29tcGFyaXNvbiBpZiBjaHVua3MgYXJlIG5vbi1lcXVhbCBudW1iZXJzLgorICAgICAgICBy
ZXR1cm4gJGEgPD0+ICRiIGlmICRhID1+IC9eXGQvICYmICRiID1+IC9eXGQvICYmICRhICE9ICRi
OworCisgICAgICAgICMgVXNlIHN0cmluZyBjb21wYXJpc29uIGlmIGNodW5rcyBhcmUgYW55IG90
aGVyIGtpbmQgb2Ygbm9uLWVxdWFsIHN0cmluZy4KKyAgICAgICAgcmV0dXJuICRhIGNtcCAkYiBp
ZiAkYSBuZSAkYjsKKyAgICB9CisgICAgCisgICAgIyBPbmUgb2YgdGhlIHR3byBpcyBub3cgZW1w
dHk7IGNvbXBhcmUgbGVuZ3RocyBmb3IgcmVzdWx0IGluIHRoaXMgY2FzZS4KKyAgICByZXR1cm4g
QGEgPD0+IEBiOworfQorCisjIFNvcnQgZmlyc3QgYnkgZGlyZWN0b3J5LCB0aGVuIGJ5IGZpbGUs
IHNvIGFsbCBwYXRocyBpbiBvbmUgZGlyZWN0b3J5IGFyZSBncm91cGVkCisjIHJhdGhlciB0aGFu
IGJlaW5nIGludGVyc3BlcnNlZCB3aXRoIGl0ZW1zIGZyb20gc3ViZGlyZWN0b3JpZXMuCisjIFVz
ZSBudW1lcmljY21wIHRvIHNvcnQgZGlyZWN0b3J5IGFuZCBmaWxlbmFtZXMgdG8gbWFrZSBvcmRl
ciBsb2dpY2FsLgorc3ViIHBhdGhjbXAoJCQpCit7CisgICAgbXkgKCRwYXRoYSwgJHBhdGhiKSA9
IEBfOworCisgICAgbXkgKCRkaXJhLCAkbmFtZWEpID0gc3BsaXRwYXRoKCRwYXRoYSk7CisgICAg
bXkgKCRkaXJiLCAkbmFtZWIpID0gc3BsaXRwYXRoKCRwYXRoYik7CisKKyAgICByZXR1cm4gbnVt
ZXJpY2NtcCgkZGlyYSwgJGRpcmIpIGlmICRkaXJhIG5lICRkaXJiOworICAgIHJldHVybiBudW1l
cmljY21wKCRuYW1lYSwgJG5hbWViKTsKK30KKworIyBCcmVhayB1cCBhIHBhdGggaW50byB0aGUg
ZGlyZWN0b3J5ICh3aXRoIHNsYXNoKSBhbmQgYmFzZSBuYW1lLgorc3ViIHNwbGl0cGF0aCgkKQor
eworICAgIG15ICgkcGF0aCkgPSBAXzsKKworICAgIG15ICRkaXJuYW1lID0gZGlybmFtZSgkcGF0
aCkgLiAiLyI7CisgICAgJGRpcm5hbWUgPSAiIiBpZiAkZGlybmFtZSBlcSAiLi8iOworICAgIG15
ICRiYXNlbmFtZSA9IGJhc2VuYW1lKCRwYXRoKTsKKworICAgIHJldHVybiAoJGRpcm5hbWUsICRi
YXNlbmFtZSk7Cit9CisKKzE7CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8782</attachid>
            <date>2006-06-09 02:34:29 -0700</date>
            <delta_ts>2006-06-09 07:34:57 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-9350-v2.diff</filename>
            <type>text/plain</type>
            <size>5230</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzc4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDYtMDkgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MzUwCisgICAgICAgIFVzZSBwYXRoY21wKCkgd2hlbiBzb3J0aW5nIHBhdGhzIGluIHN2bi1j
cmVhdGUtcGF0Y2gKKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czogRml4ZWQg
c3BsaXRwYXRoKCkgdG8gdXNlIEZpbGU6OkJhc2VuYW1lIHN1YnJvdXRpbmVzIGluc3RlYWQgb2Yg
cmVnZXguCisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoOiBDb3BpZWQgbnVtZXJp
Y2NtcCgpLCBwYXRoY21wKCkgYW5kIHNwbGl0cGF0aCgpIGZyb20gcnVuLXdlYmtpdC10ZXN0cy4K
KyAgICAgICAgQ2hhbmdlZCBzb3J0KCkgZnVuY3Rpb25zIHRvIHVzZSBwYXRoY21wKCkuICBBZGRl
ZCBzdWJyb3V0aW5lIHByb3RvdHlwZXMuICBBZGRlZCAtaCBjb21tYW5kLWxpbmUKKyAgICAgICAg
c3dpdGNoIGFuZCBwcmludFVzYWdlKCkgc3Vicm91dGluZS4KKwogMjAwNi0wNi0wNiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBkYXJp
bi4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDE0Nzc4
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw2ICs0Niw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKIHVzZSBDd2Q7
Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6Q29weTsKIHVzZSBGaWxlOjpQYXRoOwog
dXNlIEZpbGU6OlNwZWM7CkBAIC02NjAsOCArNjYxLDExIEBAIHN1YiBzcGxpdHBhdGgoJCkKIHsK
ICAgICBteSAoJHBhdGgpID0gQF87CiAKLSAgICByZXR1cm4gKCQxLCAkMikgaWYgJHBhdGggPX4g
bXxeKC4qLykoW14vXSspJHw7Ci0gICAgcmV0dXJuICgiIiwgJHBhdGgpOworICAgIG15ICRwYXRo
U2VwYXJhdG9yID0gIi8iOworICAgIG15ICRkaXJuYW1lID0gZGlybmFtZSgkcGF0aCkgLiAkcGF0
aFNlcGFyYXRvcjsKKyAgICAkZGlybmFtZSA9ICIiIGlmICRkaXJuYW1lIGVxICIuIiAuICRwYXRo
U2VwYXJhdG9yOworCisgICAgcmV0dXJuICgkZGlybmFtZSwgYmFzZW5hbWUoJHBhdGgpKTsKIH0K
IAogIyBTb3J0IGZpcnN0IGJ5IGRpcmVjdG9yeSwgdGhlbiBieSBmaWxlLCBzbyBhbGwgcGF0aHMg
aW4gb25lIGRpcmVjdG9yeSBhcmUgZ3JvdXBlZApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9z
dm4tY3JlYXRlLXBhdGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNy
ZWF0ZS1wYXRjaAkocmV2aXNpb24gMTQ3NzgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1j
cmVhdGUtcGF0Y2gJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICMgICBIYW5kbGUg
bW92ZWQgZmlsZXMuCiAKIHVzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CiAKIHVzZSBDb25maWc7
CiB1c2UgQ3dkOwpAQCAtNTEsNiArNTIsMTggQEAgdXNlIE1JTUU6OkJhc2U2NDsKIHVzZSBQT1NJ
WCBxdyg6ZXJybm9faCk7CiB1c2UgVGltZTo6Z210aW1lOwogCitzdWIgY2Fub25pY2FsaXplUGF0
aCgkKTsKK3N1YiBnZW5lcmF0ZURpZmYoJCk7CitzdWIgZ2VuZXJhdGVGaWxlTGlzdCgkXCVcJSk7
CitzdWIgbnVtZXJpY2NtcCgkJCk7CitzdWIgb3V0cHV0QmluYXJ5Q29udGVudCgkKTsKK3N1YiBw
YXRoY21wKCQkKTsKK3N1YiBwcmludFVzYWdlKCk7CitzdWIgc3BsaXRwYXRoKCQpOworCitteSAk
aGVscDsKK3ByaW50VXNhZ2UoKSBpZiAoIUdldE9wdGlvbnMoImhlbHAiID0+IFwkaGVscCkgfHwg
JGhlbHApOworCiBteSAkc3RhcnREaXIgPSBnZXRjd2QoKTsKIG15ICVwYXRoczsKIApAQCAtOTIs
MjEgKzEwNSwyMSBAQCBpZiAoIUBBUkdWKSB7CiBteSAldGV4dEZpbGVzOwogbXkgJWJpbmFyeUZp
bGVzOwogZm9yIG15ICRwYXRoIChrZXlzICVwYXRocykgewotICAgIGdlbmVyYXRlRmlsZUxpc3Qo
JHBhdGgsIFwldGV4dEZpbGVzLCBcJWJpbmFyeUZpbGVzKTsKKyAgICBnZW5lcmF0ZUZpbGVMaXN0
KCRwYXRoLCAldGV4dEZpbGVzLCAlYmluYXJ5RmlsZXMpOwogfQogCiAjIEdlbmVyYXRlIHRoZSBk
aWZmIGZvciB0ZXh0IGZpbGVzLCB0aGVuIGJpbmFyeSBmaWxlcywgZm9yIGVhc3kgcmV2aWV3aW5n
Ci1mb3IgbXkgJGZpbGUgKHNvcnQga2V5cyAldGV4dEZpbGVzKSB7Citmb3IgbXkgJGZpbGUgKHNv
cnQgcGF0aGNtcCBrZXlzICV0ZXh0RmlsZXMpIHsKICAgICBnZW5lcmF0ZURpZmYoJGZpbGUpOwog
fQotZm9yIG15ICRmaWxlIChzb3J0IGtleXMgJWJpbmFyeUZpbGVzKSB7Citmb3IgbXkgJGZpbGUg
KHNvcnQgcGF0aGNtcCBrZXlzICViaW5hcnlGaWxlcykgewogICAgIGdlbmVyYXRlRGlmZigkZmls
ZSk7CiB9CiAKIGV4aXQgMDsKIAogCi1zdWIgY2Fub25pY2FsaXplUGF0aAorc3ViIGNhbm9uaWNh
bGl6ZVBhdGgoJCkKIHsKICAgICBteSAoJGZpbGUpID0gQF87CiAKQEAgLTEyNSw3ICsxMzgsNyBA
QCBzdWIgY2Fub25pY2FsaXplUGF0aAogICAgIHJldHVybiAoJCNkaXJzID49IDApID8gRmlsZTo6
U3BlYy0+Y2F0ZGlyKEBkaXJzKSA6ICIuIjsKIH0KIAotc3ViIGdlbmVyYXRlRGlmZgorc3ViIGdl
bmVyYXRlRGlmZigkKQogewogICAgIG15ICgkZmlsZSkgPSBAXzsKICAgICBteSAkZXJyb3JzID0g
IiI7CkBAIC0xNDMsNyArMTU2LDcgQEAgc3ViIGdlbmVyYXRlRGlmZgogICAgIHByaW50IFNUREVS
UiAkZXJyb3JzOwogfQogCi1zdWIgZ2VuZXJhdGVGaWxlTGlzdAorc3ViIGdlbmVyYXRlRmlsZUxp
c3QoJFwlXCUpCiB7CiAgICAgbXkgKCRwYXRoLCAkdGV4dEZpbGVzLCAkYmluYXJ5RmlsZXMpID0g
QF87CiAgICAgbXkgJGluZGV4UGF0aDsKQEAgLTE3Nyw3ICsxOTAsMzMgQEAgc3ViIGdlbmVyYXRl
RmlsZUxpc3QKICAgICB9CiB9CiAKLXN1YiBvdXRwdXRCaW5hcnlDb250ZW50CisjIFNvcnQgbnVt
ZXJpYyBwYXJ0cyBvZiBzdHJpbmdzIGFzIG51bWJlcnMsIG90aGVyIHBhcnRzIGFzIHN0cmluZ3Mu
CisjIE1ha2VzIDEuMzMgY29tZSBhZnRlciAxLjMsIHdoaWNoIGlzIGNvb2wuCitzdWIgbnVtZXJp
Y2NtcCgkJCkKK3sKKyAgICBteSAoJGFhLCAkYmIpID0gQF87CisKKyAgICBteSBAYSA9IHNwbGl0
IC8oXGQrKS8sICRhYTsKKyAgICBteSBAYiA9IHNwbGl0IC8oXGQrKS8sICRiYjsKKworICAgICMg
Q29tcGFyZSBvbmUgY2h1bmsgYXQgYSB0aW1lLgorICAgICMgRWFjaCBjaHVuayBpcyBlaXRoZXIg
YWxsIG51bWVyaWMgZGlnaXRzLCBvciBhbGwgbm90IG51bWVyaWMgZGlnaXRzLgorICAgIHdoaWxl
IChAYSAmJiBAYikgeworICAgICAgICBteSAkYSA9IHNoaWZ0IEBhOworICAgICAgICBteSAkYiA9
IHNoaWZ0IEBiOworICAgICAgICAKKyAgICAgICAgIyBVc2UgbnVtZXJpYyBjb21wYXJpc29uIGlm
IGNodW5rcyBhcmUgbm9uLWVxdWFsIG51bWJlcnMuCisgICAgICAgIHJldHVybiAkYSA8PT4gJGIg
aWYgJGEgPX4gL15cZC8gJiYgJGIgPX4gL15cZC8gJiYgJGEgIT0gJGI7CisKKyAgICAgICAgIyBV
c2Ugc3RyaW5nIGNvbXBhcmlzb24gaWYgY2h1bmtzIGFyZSBhbnkgb3RoZXIga2luZCBvZiBub24t
ZXF1YWwgc3RyaW5nLgorICAgICAgICByZXR1cm4gJGEgY21wICRiIGlmICRhIG5lICRiOworICAg
IH0KKyAgICAKKyAgICAjIE9uZSBvZiB0aGUgdHdvIGlzIG5vdyBlbXB0eTsgY29tcGFyZSBsZW5n
dGhzIGZvciByZXN1bHQgaW4gdGhpcyBjYXNlLgorICAgIHJldHVybiBAYSA8PT4gQGI7Cit9CisK
K3N1YiBvdXRwdXRCaW5hcnlDb250ZW50KCQpCiB7CiAgICAgbXkgKCRwYXRoKSA9IEBfOwogICAg
ICMgRGVsZXRpb24KQEAgLTE5MiwzICsyMzEsMzQgQEAgc3ViIG91dHB1dEJpbmFyeUNvbnRlbnQK
ICAgICBwcmludCAiXG4iOwogfQogCisjIFNvcnQgZmlyc3QgYnkgZGlyZWN0b3J5LCB0aGVuIGJ5
IGZpbGUsIHNvIGFsbCBwYXRocyBpbiBvbmUgZGlyZWN0b3J5IGFyZSBncm91cGVkCisjIHJhdGhl
ciB0aGFuIGJlaW5nIGludGVyc3BlcnNlZCB3aXRoIGl0ZW1zIGZyb20gc3ViZGlyZWN0b3JpZXMu
CisjIFVzZSBudW1lcmljY21wIHRvIHNvcnQgZGlyZWN0b3J5IGFuZCBmaWxlbmFtZXMgdG8gbWFr
ZSBvcmRlciBsb2dpY2FsLgorc3ViIHBhdGhjbXAoJCQpCit7CisgICAgbXkgKCRwYXRoYSwgJHBh
dGhiKSA9IEBfOworCisgICAgbXkgKCRkaXJhLCAkbmFtZWEpID0gc3BsaXRwYXRoKCRwYXRoYSk7
CisgICAgbXkgKCRkaXJiLCAkbmFtZWIpID0gc3BsaXRwYXRoKCRwYXRoYik7CisKKyAgICByZXR1
cm4gbnVtZXJpY2NtcCgkZGlyYSwgJGRpcmIpIGlmICRkaXJhIG5lICRkaXJiOworICAgIHJldHVy
biBudW1lcmljY21wKCRuYW1lYSwgJG5hbWViKTsKK30KKworc3ViIHByaW50VXNhZ2UoKQorewor
ICAgIHByaW50IFNUREVSUiBiYXNlbmFtZSgkMCkgLiAiIFstaHwtLWhlbHBdIHN2bmRpcjEgW3N2
bmRpcjIgLi4uXVxuIjsKKyAgICBleGl0IDE7Cit9CisKKyMgQnJlYWsgdXAgYSBwYXRoIGludG8g
dGhlIGRpcmVjdG9yeSAod2l0aCBzbGFzaCkgYW5kIGJhc2UgbmFtZS4KK3N1YiBzcGxpdHBhdGgo
JCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICBteSAkcGF0aFNlcGFyYXRvciA9ICIv
IjsKKyAgICBteSAkZGlybmFtZSA9IGRpcm5hbWUoJHBhdGgpIC4gJHBhdGhTZXBhcmF0b3I7Cisg
ICAgJGRpcm5hbWUgPSAiIiBpZiAkZGlybmFtZSBlcSAiLiIgLiAkcGF0aFNlcGFyYXRvcjsKKwor
ICAgIHJldHVybiAoJGRpcm5hbWUsIGJhc2VuYW1lKCRwYXRoKSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8785</attachid>
            <date>2006-06-09 07:34:57 -0700</date>
            <delta_ts>2006-06-09 11:34:03 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-9350-v3.diff</filename>
            <type>text/plain</type>
            <size>5188</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzc4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDYtMDYtMDkgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGtpbHplci5uZXQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgaHR0cDovL2J1Z3ppbGxhLm9wZW5kYXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9p
ZD05MzUwCisgICAgICAgIFVzZSBwYXRoY21wKCkgd2hlbiBzb3J0aW5nIHBhdGhzIGluIHN2bi1j
cmVhdGUtcGF0Y2gKKworICAgICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC10ZXN0czogRml4ZWQg
c3BsaXRwYXRoKCkgdG8gdXNlIEZpbGU6OkJhc2VuYW1lIHN1YnJvdXRpbmVzIGluc3RlYWQgb2Yg
cmVnZXguCisgICAgICAgICogU2NyaXB0cy9zdm4tY3JlYXRlLXBhdGNoOiBDb3BpZWQgbnVtZXJp
Y2NtcCgpLCBwYXRoY21wKCkgYW5kIHNwbGl0cGF0aCgpIGZyb20gcnVuLXdlYmtpdC10ZXN0cy4K
KyAgICAgICAgQ2hhbmdlZCBzb3J0KCkgZnVuY3Rpb25zIHRvIHVzZSBwYXRoY21wKCkuICBBZGRl
ZCBzdWJyb3V0aW5lIHByb3RvdHlwZXMuICBBZGRlZCAtaCBjb21tYW5kLWxpbmUKKyAgICAgICAg
c3dpdGNoIGFuZCBwcmludFVzYWdlKCkgc3Vicm91dGluZS4KKwogMjAwNi0wNi0wNiAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIAogICAgICAgICBSZXZpZXdlZCBieSBkYXJp
bi4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMJKHJldmlzaW9uIDE0Nzc4
KQorKysgV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzCSh3b3JraW5nIGNvcHkp
CkBAIC00Niw2ICs0Niw3IEBAIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKIHVzZSBDd2Q7
Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6Q29weTsKIHVzZSBGaWxlOjpQYXRoOwog
dXNlIEZpbGU6OlNwZWM7CkBAIC02NjAsOCArNjYxLDExIEBAIHN1YiBzcGxpdHBhdGgoJCkKIHsK
ICAgICBteSAoJHBhdGgpID0gQF87CiAKLSAgICByZXR1cm4gKCQxLCAkMikgaWYgJHBhdGggPX4g
bXxeKC4qLykoW14vXSspJHw7Ci0gICAgcmV0dXJuICgiIiwgJHBhdGgpOworICAgIG15ICRwYXRo
U2VwYXJhdG9yID0gIi8iOworICAgIG15ICRkaXJuYW1lID0gZGlybmFtZSgkcGF0aCkgLiAkcGF0
aFNlcGFyYXRvcjsKKyAgICAkZGlybmFtZSA9ICIiIGlmICRkaXJuYW1lIGVxICIuIiAuICRwYXRo
U2VwYXJhdG9yOworCisgICAgcmV0dXJuICgkZGlybmFtZSwgYmFzZW5hbWUoJHBhdGgpKTsKIH0K
IAogIyBTb3J0IGZpcnN0IGJ5IGRpcmVjdG9yeSwgdGhlbiBieSBmaWxlLCBzbyBhbGwgcGF0aHMg
aW4gb25lIGRpcmVjdG9yeSBhcmUgZ3JvdXBlZApJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9z
dm4tY3JlYXRlLXBhdGNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvc3ZuLWNy
ZWF0ZS1wYXRjaAkocmV2aXNpb24gMTQ3NzgpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N2bi1j
cmVhdGUtcGF0Y2gJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICMgICBIYW5kbGUg
bW92ZWQgZmlsZXMuCiAKIHVzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7CiAKIHVzZSBDb25maWc7
CiB1c2UgQ3dkOwpAQCAtNTEsNiArNTIsMjAgQEAgdXNlIE1JTUU6OkJhc2U2NDsKIHVzZSBQT1NJ
WCBxdyg6ZXJybm9faCk7CiB1c2UgVGltZTo6Z210aW1lOwogCitzdWIgY2Fub25pY2FsaXplUGF0
aCgkKTsKK3N1YiBnZW5lcmF0ZURpZmYoJCk7CitzdWIgZ2VuZXJhdGVGaWxlTGlzdCgkXCVcJSk7
CitzdWIgbnVtZXJpY2NtcCgkJCk7CitzdWIgb3V0cHV0QmluYXJ5Q29udGVudCgkKTsKK3N1YiBw
YXRoY21wKCQkKTsKK3N1YiBzcGxpdHBhdGgoJCk7CisKK215ICRzaG93SGVscDsKK2lmICghR2V0
T3B0aW9ucygiaGVscCIgPT4gXCRzaG93SGVscCkgfHwgJHNob3dIZWxwKSB7CisgICAgcHJpbnQg
U1RERVJSIGJhc2VuYW1lKCQwKSAuICIgWy1ofC0taGVscF0gc3ZuZGlyMSBbc3ZuZGlyMiAuLi5d
XG4iOworICAgIGV4aXQgMTsKK30KKwogbXkgJHN0YXJ0RGlyID0gZ2V0Y3dkKCk7CiBteSAlcGF0
aHM7CiAKQEAgLTkyLDIxICsxMDcsMjEgQEAgaWYgKCFAQVJHVikgewogbXkgJXRleHRGaWxlczsK
IG15ICViaW5hcnlGaWxlczsKIGZvciBteSAkcGF0aCAoa2V5cyAlcGF0aHMpIHsKLSAgICBnZW5l
cmF0ZUZpbGVMaXN0KCRwYXRoLCBcJXRleHRGaWxlcywgXCViaW5hcnlGaWxlcyk7CisgICAgZ2Vu
ZXJhdGVGaWxlTGlzdCgkcGF0aCwgJXRleHRGaWxlcywgJWJpbmFyeUZpbGVzKTsKIH0KIAogIyBH
ZW5lcmF0ZSB0aGUgZGlmZiBmb3IgdGV4dCBmaWxlcywgdGhlbiBiaW5hcnkgZmlsZXMsIGZvciBl
YXN5IHJldmlld2luZwotZm9yIG15ICRmaWxlIChzb3J0IGtleXMgJXRleHRGaWxlcykgeworZm9y
IG15ICRmaWxlIChzb3J0IHBhdGhjbXAga2V5cyAldGV4dEZpbGVzKSB7CiAgICAgZ2VuZXJhdGVE
aWZmKCRmaWxlKTsKIH0KLWZvciBteSAkZmlsZSAoc29ydCBrZXlzICViaW5hcnlGaWxlcykgewor
Zm9yIG15ICRmaWxlIChzb3J0IHBhdGhjbXAga2V5cyAlYmluYXJ5RmlsZXMpIHsKICAgICBnZW5l
cmF0ZURpZmYoJGZpbGUpOwogfQogCiBleGl0IDA7CiAKIAotc3ViIGNhbm9uaWNhbGl6ZVBhdGgK
K3N1YiBjYW5vbmljYWxpemVQYXRoKCQpCiB7CiAgICAgbXkgKCRmaWxlKSA9IEBfOwogCkBAIC0x
MjUsNyArMTQwLDcgQEAgc3ViIGNhbm9uaWNhbGl6ZVBhdGgKICAgICByZXR1cm4gKCQjZGlycyA+
PSAwKSA/IEZpbGU6OlNwZWMtPmNhdGRpcihAZGlycykgOiAiLiI7CiB9CiAKLXN1YiBnZW5lcmF0
ZURpZmYKK3N1YiBnZW5lcmF0ZURpZmYoJCkKIHsKICAgICBteSAoJGZpbGUpID0gQF87CiAgICAg
bXkgJGVycm9ycyA9ICIiOwpAQCAtMTQzLDcgKzE1OCw3IEBAIHN1YiBnZW5lcmF0ZURpZmYKICAg
ICBwcmludCBTVERFUlIgJGVycm9yczsKIH0KIAotc3ViIGdlbmVyYXRlRmlsZUxpc3QKK3N1YiBn
ZW5lcmF0ZUZpbGVMaXN0KCRcJVwlKQogewogICAgIG15ICgkcGF0aCwgJHRleHRGaWxlcywgJGJp
bmFyeUZpbGVzKSA9IEBfOwogICAgIG15ICRpbmRleFBhdGg7CkBAIC0xNzcsNyArMTkyLDMzIEBA
IHN1YiBnZW5lcmF0ZUZpbGVMaXN0CiAgICAgfQogfQogCi1zdWIgb3V0cHV0QmluYXJ5Q29udGVu
dAorIyBTb3J0IG51bWVyaWMgcGFydHMgb2Ygc3RyaW5ncyBhcyBudW1iZXJzLCBvdGhlciBwYXJ0
cyBhcyBzdHJpbmdzLgorIyBNYWtlcyAxLjMzIGNvbWUgYWZ0ZXIgMS4zLCB3aGljaCBpcyBjb29s
Lgorc3ViIG51bWVyaWNjbXAoJCQpCit7CisgICAgbXkgKCRhYSwgJGJiKSA9IEBfOworCisgICAg
bXkgQGEgPSBzcGxpdCAvKFxkKykvLCAkYWE7CisgICAgbXkgQGIgPSBzcGxpdCAvKFxkKykvLCAk
YmI7CisKKyAgICAjIENvbXBhcmUgb25lIGNodW5rIGF0IGEgdGltZS4KKyAgICAjIEVhY2ggY2h1
bmsgaXMgZWl0aGVyIGFsbCBudW1lcmljIGRpZ2l0cywgb3IgYWxsIG5vdCBudW1lcmljIGRpZ2l0
cy4KKyAgICB3aGlsZSAoQGEgJiYgQGIpIHsKKyAgICAgICAgbXkgJGEgPSBzaGlmdCBAYTsKKyAg
ICAgICAgbXkgJGIgPSBzaGlmdCBAYjsKKyAgICAgICAgCisgICAgICAgICMgVXNlIG51bWVyaWMg
Y29tcGFyaXNvbiBpZiBjaHVua3MgYXJlIG5vbi1lcXVhbCBudW1iZXJzLgorICAgICAgICByZXR1
cm4gJGEgPD0+ICRiIGlmICRhID1+IC9eXGQvICYmICRiID1+IC9eXGQvICYmICRhICE9ICRiOwor
CisgICAgICAgICMgVXNlIHN0cmluZyBjb21wYXJpc29uIGlmIGNodW5rcyBhcmUgYW55IG90aGVy
IGtpbmQgb2Ygbm9uLWVxdWFsIHN0cmluZy4KKyAgICAgICAgcmV0dXJuICRhIGNtcCAkYiBpZiAk
YSBuZSAkYjsKKyAgICB9CisgICAgCisgICAgIyBPbmUgb2YgdGhlIHR3byBpcyBub3cgZW1wdHk7
IGNvbXBhcmUgbGVuZ3RocyBmb3IgcmVzdWx0IGluIHRoaXMgY2FzZS4KKyAgICByZXR1cm4gQGEg
PD0+IEBiOworfQorCitzdWIgb3V0cHV0QmluYXJ5Q29udGVudCgkKQogewogICAgIG15ICgkcGF0
aCkgPSBAXzsKICAgICAjIERlbGV0aW9uCkBAIC0xOTIsMyArMjMzLDI4IEBAIHN1YiBvdXRwdXRC
aW5hcnlDb250ZW50CiAgICAgcHJpbnQgIlxuIjsKIH0KIAorIyBTb3J0IGZpcnN0IGJ5IGRpcmVj
dG9yeSwgdGhlbiBieSBmaWxlLCBzbyBhbGwgcGF0aHMgaW4gb25lIGRpcmVjdG9yeSBhcmUgZ3Jv
dXBlZAorIyByYXRoZXIgdGhhbiBiZWluZyBpbnRlcnNwZXJzZWQgd2l0aCBpdGVtcyBmcm9tIHN1
YmRpcmVjdG9yaWVzLgorIyBVc2UgbnVtZXJpY2NtcCB0byBzb3J0IGRpcmVjdG9yeSBhbmQgZmls
ZW5hbWVzIHRvIG1ha2Ugb3JkZXIgbG9naWNhbC4KK3N1YiBwYXRoY21wKCQkKQoreworICAgIG15
ICgkcGF0aGEsICRwYXRoYikgPSBAXzsKKworICAgIG15ICgkZGlyYSwgJG5hbWVhKSA9IHNwbGl0
cGF0aCgkcGF0aGEpOworICAgIG15ICgkZGlyYiwgJG5hbWViKSA9IHNwbGl0cGF0aCgkcGF0aGIp
OworCisgICAgcmV0dXJuIG51bWVyaWNjbXAoJGRpcmEsICRkaXJiKSBpZiAkZGlyYSBuZSAkZGly
YjsKKyAgICByZXR1cm4gbnVtZXJpY2NtcCgkbmFtZWEsICRuYW1lYik7Cit9CisKKyMgQnJlYWsg
dXAgYSBwYXRoIGludG8gdGhlIGRpcmVjdG9yeSAod2l0aCBzbGFzaCkgYW5kIGJhc2UgbmFtZS4K
K3N1YiBzcGxpdHBhdGgoJCkKK3sKKyAgICBteSAoJHBhdGgpID0gQF87CisKKyAgICBteSAkcGF0
aFNlcGFyYXRvciA9ICIvIjsKKyAgICBteSAkZGlybmFtZSA9IGRpcm5hbWUoJHBhdGgpIC4gJHBh
dGhTZXBhcmF0b3I7CisgICAgJGRpcm5hbWUgPSAiIiBpZiAkZGlybmFtZSBlcSAiLiIgLiAkcGF0
aFNlcGFyYXRvcjsKKworICAgIHJldHVybiAoJGRpcm5hbWUsIGJhc2VuYW1lKCRwYXRoKSk7Cit9
Cg==
</data>
<flag name="review"
          id="2546"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>