<?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>13005</bug_id>
          
          <creation_ts>2007-03-07 13:56:04 -0800</creation_ts>
          <short_desc>WebScriptObject +throwException needs NULL check</short_desc>
          <delta_ts>2007-03-18 16:40:00 -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>WebCore Misc.</component>
          <version>523.x (Safari 3)</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>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dan Waylonis">waylonis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>20008</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-07 13:56:04 -0800</bug_when>
    <thetext>When quitting Safari, it&apos;s possible for the interpreter to have been torn down, but outstanding vended objects may not have been dealloc&apos;d.  In WebScriptObject, +throwException, before dereferencing &quot;interp&quot;, it would be safe and easy to check to see if the value is NULL and if so, return NO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20002</commentid>
    <comment_count>1</comment_count>
      <attachid>13526</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-07 13:58:40 -0800</bug_when>
    <thetext>Created attachment 13526
Patch for 13005 to check for NULL before dereferencing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19864</commentid>
    <comment_count>2</comment_count>
      <attachid>13526</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-03-07 16:56:18 -0800</bug_when>
    <thetext>Comment on attachment 13526
Patch for 13005 to check for NULL before dereferencing

Dan, don&apos;t forget to set the review flag!  :)

Also, this change will need a changelog (WebKitTools/Scripts/prepare-ChangeLog), and if possible an objc unit test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19913</commentid>
    <comment_count>3</comment_count>
      <attachid>13526</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-08 08:53:49 -0800</bug_when>
    <thetext>Comment on attachment 13526
Patch for 13005 to check for NULL before dereferencing

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19914</commentid>
    <comment_count>4</comment_count>
      <attachid>13526</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-08 08:55:07 -0800</bug_when>
    <thetext>Comment on attachment 13526
Patch for 13005 to check for NULL before dereferencing

Oops! Fix is great, but need a change log entry and, if possible, a regression test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19827</commentid>
    <comment_count>5</comment_count>
      <attachid>13550</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-08 17:33:46 -0800</bug_when>
    <thetext>Created attachment 13550
Patch for 13005 to check for NULL before dereferencing + ChangeLog

I&apos;ve included the WebCore/ChangeLog modification.  I think that any regression testing would be substantially larger than the patch, so I haven&apos;t included a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19753</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-09 06:47:27 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I&apos;ve included the WebCore/ChangeLog modification.  I think that any regression
&gt; testing would be substantially larger than the patch, so I haven&apos;t included a
&gt; test.

I don&apos;t understand that rationale. Our tests are often substantially larger than the patches to fix the bug. We definitely want a test if we can make one, because otherwise it&apos;s likely that someone in the future will break this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19373</commentid>
    <comment_count>7</comment_count>
      <attachid>13601</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-12 14:42:55 -0700</bug_when>
    <thetext>Created attachment 13601
Patch for 13005 to check for NULL before dereferencing

I&apos;ve added a test and updated the changelogs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19200</commentid>
    <comment_count>8</comment_count>
      <attachid>13601</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-03-12 21:18:30 -0700</bug_when>
    <thetext>Comment on attachment 13601
Patch for 13005 to check for NULL before dereferencing

Looks great. Only some minor problems:

++ (NSString *)webScriptNameForKey:(const char *)key {
++ (BOOL)isKeyExcludedFromWebScript:(const char *)key {
+- (void)dealloc {
+function print(message) {
+function test() {

We put the braces on the next line when defining functions, evein in JavaScript.

The patch has a few tabs in it, and is missing blank lines in the change logs. The change logs say &quot;waylonis&quot; for your name.

I can&apos;t tell how the test case detects success. For example, I could take the throwOnDealloc behavior out of the test entirely, and the test would still seem to succeed. Is there something we can do about that? Can we catch the JavaScript exception?

I hate to review- when it&apos;s so close, but the tabs at least need to be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18903</commentid>
    <comment_count>9</comment_count>
      <attachid>13633</attachid>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-14 11:39:15 -0700</bug_when>
    <thetext>Created attachment 13633
Improved patch to conform with WebKit guidelines

I&apos;ve corrected the tabs and formatting issues.  As far as the test case goes, unfortunately, it causes a Bus Error with the current version of WebScriptObject.mm when the plugin is dealloc&apos;d.  A successful test does not Bus Error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18818</commentid>
    <comment_count>10</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-03-14 20:04:25 -0700</bug_when>
    <thetext>This is looking good!

I think this test would be better if JavaScript caught and logged the exception. This would test to make sure JavaScript gets the exception, instead of just having a empty results file.

Expose a method to JavaScript tha throws an exception and call it inside JavaScript inside a a try/catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18326</commentid>
    <comment_count>11</comment_count>
    <who name="Dan Waylonis">waylonis</who>
    <bug_when>2007-03-15 11:20:46 -0700</bug_when>
    <thetext>Hi Tim,
The problem arises after all of the JavaScript on the page has executed and when the current page/interpreter has been released.  There&apos;s no way to catch any exception thrown from JS at this time because there&apos;s no JS executing.

The problem is that even though the interpreter has been released, there may still be ObjC objects that have been allocated by the HTML page.  If these objects, in their dealloc method, call [WebScriptObject throwException:@&quot;&quot;], the current code will bus error.  My patch checks for the invalid interpreter and returns without trying to dereference a NULL object.

Thanks, Dan
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18386</commentid>
    <comment_count>12</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2007-03-16 07:59:16 -0700</bug_when>
    <thetext>Thanks Dan, I understand now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18511</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-03-18 16:40:00 -0700</bug_when>
    <thetext>Landed in r20296.  Thanks for the patch!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13526</attachid>
            <date>2007-03-07 13:58:40 -0800</date>
            <delta_ts>2007-03-12 14:42:55 -0700</delta_ts>
            <desc>Patch for 13005 to check for NULL before dereferencing</desc>
            <filename>bug-13005.diff</filename>
            <type>text/plain</type>
            <size>591</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkocmV2aXNpb24g
MjAwMjIpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDkgQEAgc3RhdGljIHZvaWQgX2RpZEV4ZWN1dGUoV2Vi
U2NyaXB0T2JqZWN0IAogICAgIC8vIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIGhhdmUgdG8gY2hh
bmdlLgogICAgIGZpcnN0ID0gaW50ZXJwOwogICAgIGRvIHsKKyAgICAgICAgaWYgKCFpbnRlcnAp
CisgICAgICAgICAgICByZXR1cm4gTk87CisKICAgICAgICAgLy8gSWYgdGhlIGludGVycHJldGVy
IGhhcyBhIGNvbnRleHQsIHdlIHNldCB0aGUgZXhjZXB0aW9uLgogICAgICAgICBpZiAoaW50ZXJw
LT5jb250ZXh0KCkpIHsKICAgICAgICAgICAgIEV4ZWNTdGF0ZSAqZXhlYyA9IGludGVycC0+Y29u
dGV4dCgpLT5leGVjU3RhdGUoKTsK
</data>
<flag name="review"
          id="5361"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13550</attachid>
            <date>2007-03-08 17:33:46 -0800</date>
            <delta_ts>2007-03-12 14:42:55 -0700</delta_ts>
            <desc>Patch for 13005 to check for NULL before dereferencing + ChangeLog</desc>
            <filename>bug-13005b.diff</filename>
            <type>text/plain</type>
            <size>1118</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDA3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDctMDMtMDggIHdheWxvbmlzICA8d2F5bG9uaXNAbWFjLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXQVJOSU5H
OiBOTyBURVNUIENBU0VTIEFEREVEIE9SIENIQU5HRUQKKworICAgICAgICAqIGJpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tOgorICAgICAgICAoK1tXZWJTY3JpcHRPYmplY3QgdGhyb3dF
eGNlcHRpb246XSk6CisJRml4IHBvc3NpYmxlIE5VTEwgZGVyZWZlcmVuY2Ugd2hlbiBleGNlcHRp
b24gaXMgdGhyb3duIGF0IHRlYXJkb3cKKwogMjAwNy0wMy0wOCAgSnVzdGluIEdhcmNpYSAgPGp1
c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGhhcnJpc29uCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDIw
MDY1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw5IEBACiAgICAgLy8gaW4gd2hpY2ggY2FzZSB0aGlzIHdp
bGwgaGF2ZSB0byBjaGFuZ2UuCiAgICAgZmlyc3QgPSBpbnRlcnA7CiAgICAgZG8geworICAgICAg
ICBpZiAoIWludGVycCkKKyAgICAgICAgICAgIHJldHVybiBOTzsKKwogICAgICAgICAvLyBJZiB0
aGUgaW50ZXJwcmV0ZXIgaGFzIGEgY29udGV4dCwgd2Ugc2V0IHRoZSBleGNlcHRpb24uCiAgICAg
ICAgIGlmIChpbnRlcnAtPmNvbnRleHQoKSkgewogICAgICAgICAgICAgRXhlY1N0YXRlICpleGVj
ID0gaW50ZXJwLT5jb250ZXh0KCktPmV4ZWNTdGF0ZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13601</attachid>
            <date>2007-03-12 14:42:55 -0700</date>
            <delta_ts>2007-03-14 11:39:15 -0700</delta_ts>
            <desc>Patch for 13005 to check for NULL before dereferencing</desc>
            <filename>bug-13005c.diff</filename>
            <type>text/plain</type>
            <size>5030</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMTIzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDctMDMtMTIgIHdheWxvbmlzICA8d2F5bG9u
aXNAbWFjLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwlodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwNQorCUEgcGx1Z2luIHRoYXQg
dGhyb3dzIG9uIGRlYWxsb2MgY2FuIGNyYXNoIFdlYktpdAorCisgICAgICAgICogcGx1Z2lucy90
aHJvdy1vbi1kZWFsbG9jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGx1Z2lucy90
aHJvdy1vbi1kZWFsbG9jLmh0bWw6IEFkZGVkLgorCiAyMDA3LTAzLTA5ICBSb2IgQnVpcyAgPGJ1
aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Rocm93LW9uLWRlYWxsb2MtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvdGhyb3ctb24tZGVhbGxvYy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVnaW5zL3Rocm93LW9uLWRlYWxs
b2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACisKSW5kZXg6IExheW91
dFRlc3RzL3BsdWdpbnMvdGhyb3ctb24tZGVhbGxvYy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsdWdpbnMvdGhyb3ctb24tZGVhbGxvYy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvcGx1Z2lucy90aHJvdy1vbi1kZWFsbG9jLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPlRocm93T25EZWFsbG9jPC90aXRsZT4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBwcmludChtZXNzYWdlKSB7CisgICAgdmFyIHBhcmFncmFwaCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKyAgICBwYXJhZ3JhcGguYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJykuYXBwZW5kQ2hpbGQocGFyYWdyYXBoKTsKK30KKworZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgaWYgKCF3aW5kb3cub2JqQ1Bs
dWdpbikKKyAgICAgICAgcmV0dXJuIHByaW50KCdGQUlMIC0gbm8gb2JqQ1BsdWdpbicpOworCQor
CS8vIFNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgb2JqZWN0IHNob3VsZCB0aHJvdwor
CS8vIGFuIGV4Y2VwdGlvbiBvbiBkZWFsbG9jIG9mIHRoZSBwbHVnaW4KKwlvYmpDUGx1Z2luLnRo
cm93T25EZWFsbG9jID0gdHJ1ZTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCk7Ij4KKzxkaXYgaWQ9J2NvbnNvbGUnLz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMDEyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTIgQEAKKzIwMDctMDMtMTIgIHdheWxvbmlzICA8d2F5bG9uaXNAbWFjLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwlodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzAwNQorCUFkZCBjaGVja2luZyBmb3IgTlVMTCBpbnRlcnByZXRl
ciBiZWZvcmUgdGhyb3dpbmcgZXhjZXB0aW9uCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dl
YlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IHRocm93RXhjZXB0
aW9uOl0pOgorCiAyMDA3LTAzLTEyICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9XZWJTY3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDIwMDk0KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw5
IEBAIHN0YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNjcmlwdE9iamVjdCAKICAgICAvLyBpbiB3
aGljaCBjYXNlIHRoaXMgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICBmaXJzdCA9IGludGVycDsK
ICAgICBkbyB7CisgICAgICAgIGlmICghaW50ZXJwKQorICAgICAgICAgICAgcmV0dXJuIE5POwor
CiAgICAgICAgIC8vIElmIHRoZSBpbnRlcnByZXRlciBoYXMgYSBjb250ZXh0LCB3ZSBzZXQgdGhl
IGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKGludGVycC0+Y29udGV4dCgpKSB7CiAgICAgICAgICAg
ICBFeGVjU3RhdGUgKmV4ZWMgPSBpbnRlcnAtPmNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CkluZGV4
OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDEyMykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA3LTAzLTEyICB3YXlsb25pcyAgPHdheWxvbmlzQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisJaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMDUKKwlBZGQgdGVzdHMgdG8gZW5z
dXJlIHRoYXQgYSBwbHVnaW4gY2FuIHNhZmVseSB0aHJvdyBhbiBleGNlcHRpb24gaW4gZGVhbGxv
YworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL09iakNQbHVnaW4uaDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9PYmpDUGx1Z2luLm06CisgICAgICAgICgrW09iakNQbHVnaW4gd2ViU2NyaXB0
TmFtZUZvcktleTpdKToKKyAgICAgICAgKCtbT2JqQ1BsdWdpbiBpc0tleUV4Y2x1ZGVkRnJvbVdl
YlNjcmlwdDpdKToKKyAgICAgICAgKC1bT2JqQ1BsdWdpbiBkZWFsbG9jXSk6CisKIDIwMDctMDMt
MTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL09iakNQ
bHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9PYmpDUGx1
Z2luLmgJKHJldmlzaW9uIDIwMDk0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvT2Jq
Q1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIEBpbnRlcmZhY2Ug
T2JqQ1BsdWdpbiA6IE5TT2JqZWN0CiB7CisgICAgQk9PTCB0aHJvd09uRGVhbGxvYzsKIH0KIAog
LSAodm9pZClyZW1vdmVCcmlkZ2VSZXN0cmljdGlvbnM6KGlkKWNvbnRhaW5lcjsKSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL09iakNQbHVnaW4ubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9PYmpDUGx1Z2luLm0JKHJldmlzaW9uIDIwMDk0KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvT2JqQ1BsdWdpbi5tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTcsNiArMTU3LDIwIEBAIHN0YXRpYyBCT09MIF9hbGxvd3NTY3JpcHRzRnVsbEFjY2VzcyA9
IE4KICAgICByZXR1cm4gbmlsOwogfQogCisrIChOU1N0cmluZyAqKXdlYlNjcmlwdE5hbWVGb3JL
ZXk6KGNvbnN0IGNoYXIgKilrZXkgeworICAgIGlmIChzdHJjbXAoa2V5LCAidGhyb3dPbkRlYWxs
b2MiKSA9PSAwKQorICAgICAgcmV0dXJuIEAidGhyb3dPbkRlYWxsb2MiOworICAgIAorICAgIHJl
dHVybiBuaWw7Cit9CisKKysgKEJPT0wpaXNLZXlFeGNsdWRlZEZyb21XZWJTY3JpcHQ6KGNvbnN0
IGNoYXIgKilrZXkgeworICAgIGlmIChzdHJjbXAoa2V5LCAidGhyb3dPbkRlYWxsb2MiKSA9PSAw
KQorICAgICAgcmV0dXJuIE5POworICAgIAorICAgIHJldHVybiBZRVM7Cit9CisKIC0gKHZvaWQp
cmVtb3ZlQnJpZGdlUmVzdHJpY3Rpb25zOihpZCljb250YWluZXIKIHsKICAgICAvLyBsZXQgc2Ny
aXB0cyBpbnZva2UgYW55IHNlbGVjdG9yCkBAIC0xNzksNCArMTkzLDExIEBAIHN0YXRpYyBCT09M
IF9hbGxvd3NTY3JpcHRzRnVsbEFjY2VzcyA9IE4KICAgICAgICAgW1dlYlNjcmlwdE9iamVjdCB0
aHJvd0V4Y2VwdGlvbjpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAICE9IEhlbGxvIiwg
c3RyXV07CiB9CiAKKy0gKHZvaWQpZGVhbGxvYyB7CisgICAgaWYgKHRocm93T25EZWFsbG9jKQor
ICAgICAgICBbV2ViU2NyaXB0T2JqZWN0IHRocm93RXhjZXB0aW9uOkAiVGhyb3dpbmcgZXhjZXB0
aW9uIG9uIGRlYWxsb2Mgb2YgT2JqQ1BsdWdpbiJdOworICAgIAorICAgIFtzdXBlciBkZWFsbG9j
XTsKK30KKwogQGVuZAo=
</data>
<flag name="review"
          id="5399"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>13633</attachid>
            <date>2007-03-14 11:39:15 -0700</date>
            <delta_ts>2007-03-16 07:58:47 -0700</delta_ts>
            <desc>Improved patch to conform with WebKit guidelines</desc>
            <filename>bug-13005d.diff</filename>
            <type>text/plain</type>
            <size>5100</size>
            <attacher name="Dan Waylonis">waylonis</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMTIzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDctMDMtMTIgIERhbiBXYXlsb25pcyAgPHdh
eWxvbmlzQG1hYy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisg
ICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA1CisgICAg
ICAgIEEgcGx1Z2luIHRoYXQgdGhyb3dzIG9uIGRlYWxsb2MgY2FuIGNyYXNoIFdlYktpdAorCisg
ICAgICAgICogcGx1Z2lucy90aHJvdy1vbi1kZWFsbG9jLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogcGx1Z2lucy90aHJvdy1vbi1kZWFsbG9jLmh0bWw6IEFkZGVkLgorCiAyMDA3LTAz
LTA5ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOaWtv
bGFzIFppbW1lcm1hbm4uCkluZGV4OiBMYXlvdXRUZXN0cy9wbHVnaW5zL3Rocm93LW9uLWRlYWxs
b2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvdGhyb3ct
b24tZGVhbGxvYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbHVn
aW5zL3Rocm93LW9uLWRlYWxsb2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
IEBACisKSW5kZXg6IExheW91dFRlc3RzL3BsdWdpbnMvdGhyb3ctb24tZGVhbGxvYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsdWdpbnMvdGhyb3ctb24tZGVhbGxvYy5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGx1Z2lucy90aHJvdy1vbi1kZWFsbG9jLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+PHRpdGxlPlRocm93
T25EZWFsbG9jPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBwcmludChtZXNzYWdlKQorewor
ICAgIHZhciBwYXJhZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisgICAgcGFy
YWdyYXBoLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmFwcGVuZENoaWxkKHBhcmFncmFw
aCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSAKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgaWYgKCF3aW5kb3cub2JqQ1BsdWdpbikKKyAgICAgICAgcmV0dXJuIHByaW50KCdGQUlMIC0g
bm8gb2JqQ1BsdWdpbicpOworICAgIAorICAgIC8vIFNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhh
dCB0aGUgb2JqZWN0IHNob3VsZCB0aHJvdworICAgIC8vIGFuIGV4Y2VwdGlvbiBvbiBkZWFsbG9j
IG9mIHRoZSBwbHVnaW4KKyAgICBvYmpDUGx1Z2luLnRocm93T25EZWFsbG9jID0gdHJ1ZTsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCk7Ij4KKzxkaXYgaWQ9J2Nv
bnNvbGUnLz4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDEyMykKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMDctMDMtMTIgIERh
biBXYXlsb25pcyAgPHdheWxvbmlzQG1hYy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMDA1CisgICAgICAgIEFkZCBjaGVja2luZyBmb3IgTlVMTCBpbnRlcnByZXRlciBiZWZv
cmUgdGhyb3dpbmcgZXhjZXB0aW9uCisKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlw
dE9iamVjdC5tbToKKyAgICAgICAgKCtbV2ViU2NyaXB0T2JqZWN0IHRocm93RXhjZXB0aW9uOl0p
OgorCiAyMDA3LTAzLTEyICBBZGVsZSBQZXRlcnNvbiAgPGFkZWxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0JKHJldmlzaW9uIDIwMDk0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L1dlYlNjcmlwdE9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw5IEBAIHN0
YXRpYyB2b2lkIF9kaWRFeGVjdXRlKFdlYlNjcmlwdE9iamVjdCAKICAgICAvLyBpbiB3aGljaCBj
YXNlIHRoaXMgd2lsbCBoYXZlIHRvIGNoYW5nZS4KICAgICBmaXJzdCA9IGludGVycDsKICAgICBk
byB7CisgICAgICAgIGlmICghaW50ZXJwKQorICAgICAgICAgICAgcmV0dXJuIE5POworCiAgICAg
ICAgIC8vIElmIHRoZSBpbnRlcnByZXRlciBoYXMgYSBjb250ZXh0LCB3ZSBzZXQgdGhlIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKGludGVycC0+Y29udGV4dCgpKSB7CiAgICAgICAgICAgICBFeGVj
U3RhdGUgKmV4ZWMgPSBpbnRlcnAtPmNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CkluZGV4OiBXZWJL
aXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMDEyMykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDA3LTAzLTEyICBEYW4gV2F5bG9uaXMgIDx3YXlsb25pc0BtYWMu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzAwNQorICAgICAgICBBZGQgdGVz
dHMgdG8gZW5zdXJlIHRoYXQgYSBwbHVnaW4gY2FuIHNhZmVseSB0aHJvdyBhbiBleGNlcHRpb24g
aW4gZGVhbGxvYworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL09iakNQbHVnaW4uaDoKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9PYmpDUGx1Z2luLm06CisgICAgICAgICgrW09iakNQbHVnaW4g
d2ViU2NyaXB0TmFtZUZvcktleTpdKToKKyAgICAgICAgKCtbT2JqQ1BsdWdpbiBpc0tleUV4Y2x1
ZGVkRnJvbVdlYlNjcmlwdDpdKToKKyAgICAgICAgKC1bT2JqQ1BsdWdpbiBkZWFsbG9jXSk6CisK
IDIwMDctMDMtMTEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL09iakNQbHVnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9PYmpDUGx1Z2luLmgJKHJldmlzaW9uIDIwMDk0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvT2JqQ1BsdWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKIEBp
bnRlcmZhY2UgT2JqQ1BsdWdpbiA6IE5TT2JqZWN0CiB7CisgICAgQk9PTCB0aHJvd09uRGVhbGxv
YzsKIH0KIAogLSAodm9pZClyZW1vdmVCcmlkZ2VSZXN0cmljdGlvbnM6KGlkKWNvbnRhaW5lcjsK
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL09iakNQbHVnaW4ubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9PYmpDUGx1Z2luLm0JKHJldmlzaW9uIDIw
MDk0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvT2JqQ1BsdWdpbi5tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNiArMTU3LDIyIEBAIHN0YXRpYyBCT09MIF9hbGxvd3NTY3JpcHRzRnVs
bEFjY2VzcyA9IE4KICAgICByZXR1cm4gbmlsOwogfQogCisrIChOU1N0cmluZyAqKXdlYlNjcmlw
dE5hbWVGb3JLZXk6KGNvbnN0IGNoYXIgKilrZXkgCit7CisgICAgaWYgKHN0cmNtcChrZXksICJ0
aHJvd09uRGVhbGxvYyIpID09IDApCisgICAgICByZXR1cm4gQCJ0aHJvd09uRGVhbGxvYyI7Cisg
ICAgCisgICAgcmV0dXJuIG5pbDsKK30KKworKyAoQk9PTClpc0tleUV4Y2x1ZGVkRnJvbVdlYlNj
cmlwdDooY29uc3QgY2hhciAqKWtleSAKK3sKKyAgICBpZiAoc3RyY21wKGtleSwgInRocm93T25E
ZWFsbG9jIikgPT0gMCkKKyAgICAgIHJldHVybiBOTzsKKyAgICAKKyAgICByZXR1cm4gWUVTOwor
fQorCiAtICh2b2lkKXJlbW92ZUJyaWRnZVJlc3RyaWN0aW9uczooaWQpY29udGFpbmVyCiB7CiAg
ICAgLy8gbGV0IHNjcmlwdHMgaW52b2tlIGFueSBzZWxlY3RvcgpAQCAtMTc5LDQgKzE5NSwxMSBA
QCBzdGF0aWMgQk9PTCBfYWxsb3dzU2NyaXB0c0Z1bGxBY2Nlc3MgPSBOCiAgICAgICAgIFtXZWJT
Y3JpcHRPYmplY3QgdGhyb3dFeGNlcHRpb246W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIl
QCAhPSBIZWxsbyIsIHN0cl1dOwogfQogCistICh2b2lkKWRlYWxsb2MgeworICAgIGlmICh0aHJv
d09uRGVhbGxvYykKKyAgICAgICAgW1dlYlNjcmlwdE9iamVjdCB0aHJvd0V4Y2VwdGlvbjpAIlRo
cm93aW5nIGV4Y2VwdGlvbiBvbiBkZWFsbG9jIG9mIE9iakNQbHVnaW4iXTsKKyAgICAKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKIEBlbmQK
</data>
<flag name="review"
          id="5412"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>