<?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>119812</bug_id>
          
          <creation_ts>2013-08-14 13:41:00 -0700</creation_ts>
          <short_desc>errorDescriptionForValue() should not assume error value is an Object</short_desc>
          <delta_ts>2013-08-22 14:24:34 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>119803</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Curtis">chris_curtis</reporter>
          <assigned_to name="Chris Curtis">chris_curtis</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>chris_curtis</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jbriance</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>917268</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 13:41:00 -0700</bug_when>
    <thetext>+++ This bug was initially created as a clone of Bug #119803 +++
Bug 119803 &lt;https://bugs.webkit.org/show_bug.cgi?id=119803&gt; reported 2 crashes: 1 in a release build, the other in a debug build.  The release build issues is due to errorDescriptionForValue() assuming that the passed in error value is either one of the following: null, undefined, int32, double, true, false, string, function, or object.  If the value did not turn out to be one of the first 8 cases, we assumed it was an object.  This turned out to not be true i.e. the steps below produced an error JSValue that was not any of the 9 cases.  This bug will fix that issue.

The debug crash is due to something else, and we&apos;ll let &lt;https://bugs.webkit.org/show_bug.cgi?id=119803&gt; track that.

Steps to reproduce the crash:

Visiting the website http://html5test.com using WinLauncher on Windows crashes with the following stacktrace:

In release we crash as follows:

&gt;	JavaScriptCore.dll!JSC::JSCell::methodTable()  Line 157	C++
 	JavaScriptCore.dll!JSC::errorDescriptionForValue(JSC::ExecState * exec, JSC::JSValue v)  Line 110 + 0x8 bytes	C++
 	JavaScriptCore.dll!JSC::createError(JSC::ExecState * exec, JSC::JSObject * (JSC::ExecState *, const WTF::String &amp;)* errorFactory, JSC::JSValue value, const WTF::String &amp; message)  Line 115 + 0x24 bytes	C++
 	JavaScriptCore.dll!JSC::createNotAnObjectError(JSC::ExecState * exec, JSC::JSValue value)  Line 139 + 0x28 bytes	C++
 	JavaScriptCore.dll!JSC::JSValue::synthesizePrototype(JSC::ExecState * exec)  Line 111 + 0xe bytes	C++
 	JavaScriptCore.dll!JSC::JSValue::get(JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot &amp; slot)  Line 637	C++
 	JavaScriptCore.dll!JSC::getByVal(JSC::ExecState * callFrame, JSC::JSValue baseValue, JSC::JSValue subscript, JSC::ReturnAddressPtr returnAddress)  Line 1544 + 0x2b bytes	C++
 	JavaScriptCore.dll!cti_op_get_by_val_generic(void * * args)  Line 1605	C++
 	0b8307d0()	
 	JavaScriptCore.dll!JSC::JITCode::execute(JSC::JSStack * stack, JSC::ExecState * callFrame, JSC::VM * vm)  Line 46 + 0x20 bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program, JSC::ExecState * callFrame, JSC::JSObject * thisObj)  Line 851 + 0x2d bytes	C++
 	JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec, const JSC::SourceCode &amp; source, JSC::JSValue thisValue, JSC::JSValue * returnedException)  Line 85	C++
 	WebKit.dll!WebCore::JSMainThreadExecState::evaluate(JSC::ExecState * exec, const JSC::SourceCode &amp; source, JSC::JSValue thisValue, JSC::JSValue * exception)  Line 74 + 0x1b bytes	C++
 	WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode &amp; sourceCode, WebCore::DOMWrapperWorld * world)  Line 142 + 0x34 bytes	C++
 	WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode &amp; sourceCode)  Line 158 + 0x40 bytes	C++
 	WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode &amp; sourceCode)  Line 316 + 0x16 bytes	C++
 	WebKit.dll!WebCore::ScriptRunner::timerFired(WebCore::Timer&lt;WebCore::ScriptRunner&gt; * timer)  Line 121 + 0x2a5 bytes	C++
 	WebKit.dll!WebCore::Timer&lt;WebCore::Settings&gt;::fired()  Line 114 + 0xb bytes	C++
 	WebKit.dll!WebCore::ThreadTimers::sharedTimerFiredInternal()  Line 132	C++
 	WebKit.dll!WebCore::TimerWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned int wParam, long lParam)  Line 111	C++
 	user32.dll!_InternalCallWinProc@20()  + 0x23 bytes	
 	user32.dll!_UserCallWinProcCheckWow@36()  + 0xbd bytes	
 	user32.dll!_DispatchMessageWorker@8()  + 0xf8 bytes	
 	user32.dll!_DispatchMessageW@4()  + 0x10 bytes	
 	CoreFoundation.dll!__CFRunLoopRun(__CFRunLoop * rl, __CFRunLoopMode * rlm, double seconds, unsigned char stopAfterHandle, __CFRunLoopMode * previousMode)  Line 42292	C++
 	CoreFoundation.dll!CFRunLoopRunSpecific(__CFRunLoop * rl, const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled)  Line 42413 + 0x12 bytes	C++
 	CoreFoundation.dll!CFRunLoopRun()  Line 42440 + 0x1d bytes	C++
 	WinLauncher.dll!dllLauncherEntryPoint(HINSTANCE__ * __formal, HINSTANCE__ * __formal, HINSTANCE__ * __formal, int nCmdShow)  Line 456	C++
 	WinLauncher.exe!004018b8() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for WinLauncher.exe]	
 	msvcr100.dll!_free()  + 0x1c bytes	
 	msvcr100.dll!__wsetenvp()  + 0xa2 bytes	
 	msvcr100.dll!___wgetmainargs()  + 0x53 bytes	
 	WinLauncher.exe!004024c9() 	
 	WinLauncher.exe!00402636() 	
 	kernel32.dll!@BaseThreadInitThunk@12()  + 0xe bytes	
 	ntdll.dll!___RtlUserThreadStart@8()  + 0x27 bytes	
 	ntdll.dll!__RtlUserThreadStart@8()  + 0x1b bytes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917273</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-08-14 13:47:41 -0700</bug_when>
    <thetext>Chris, the &apos;crash&apos; under Bug #119803 is simply an assertion. We have debug asserts perform a WTFCrash, which stops in the debugger so you can see what&apos;s going on.

I mentioned it in my original bug because I thought it might be a clue to the problem you resolved here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917275</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 13:51:52 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Chris, the &apos;crash&apos; under Bug #119803 is simply an assertion. We have debug asserts perform a WTFCrash, which stops in the debugger so you can see what&apos;s going on.
&gt; 
&gt; I mentioned it in my original bug because I thought it might be a clue to the problem you resolved here.

This is true but that assert happens in a completely different area that is unrelated to the release crash. The patch will fix the release crash, but the debug assert crash will still happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917355</commentid>
    <comment_count>3</comment_count>
      <attachid>208776</attachid>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 17:21:55 -0700</bug_when>
    <thetext>Created attachment 208776
patch

Added a check to make sure the JSValue was an object before casting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917358</commentid>
    <comment_count>4</comment_count>
      <attachid>208776</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-14 17:29:57 -0700</bug_when>
    <thetext>Comment on attachment 208776
patch

What is the type?  Is it not a cell?  If it is a cell why class info does it say it has?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917384</commentid>
    <comment_count>5</comment_count>
      <attachid>208776</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-14 18:36:30 -0700</bug_when>
    <thetext>Comment on attachment 208776
patch

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

We need a regression test for this. Or an explanation of why you can’t make one.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:109
&gt; +        return jsString(exec, asObject(v)-&gt;methodTable()-&gt;className(asObject(v)));

Should use “object” here instead of “asObject(v)”.

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:111
&gt; +    return jsString(exec, &quot;&quot;);

Should be:

    return vm-&gt;smallStrings.emptyString();

But why specifically the empty string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917400</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 20:21:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 208776 [details])
&gt; What is the type?  Is it not a cell?  If it is a cell why class info does it say it has?

It has no type. The JSValue in this case only evaluates as a primitive. All other types evaluate as false. It could be something unique with the site because it tests features of html5 that are not yet supported. The other unique thing is that this is only present on windows. I can not duplicate error on mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917401</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-14 20:24:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 208776 [details] [details])
&gt; &gt; What is the type?  Is it not a cell?  If it is a cell why class info does it say it has?
&gt; 
&gt; It has no type. The JSValue in this case only evaluates as a primitive. All other types evaluate as false. It could be something unique with the site because it tests features of html5 that are not yet supported. The other unique thing is that this is only present on windows. I can not duplicate error on mac.

No, everything must have a type.  Hence my question: does value.isCell() return true?  If it does it could be that we&apos;re incorrectly claiming that it&apos;s guaranteed to be a cell and so we&apos;re blindly replacing the tag with CellTag.  If it is a real cell it must have a structure, and the structure has a class info.

Have you tried reproducing on 32bit mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917402</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 20:26:35 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (From update of attachment 208776 [details] [details] [details])
&gt; &gt; &gt; What is the type?  Is it not a cell?  If it is a cell why class info does it say it has?
&gt; &gt; 
&gt; &gt; It has no type. The JSValue in this case only evaluates as a primitive. All other types evaluate as false. It could be something unique with the site because it tests features of html5 that are not yet supported. The other unique thing is that this is only present on windows. I can not duplicate error on mac.
&gt; 
&gt; No, everything must have a type.  Hence my question: does value.isCell() return true?  If it does it could be that we&apos;re incorrectly claiming that it&apos;s guaranteed to be a cell and so we&apos;re blindly replacing the tag with CellTag.  If it is a real cell it must have a structure, and the structure has a class info.
&gt; 
&gt; Have you tried reproducing on 32bit mac?

&quot;Hence my question: does value.isCell() return true?&quot; No, value.isCell() evaluates false. I reduced it down to the 32 bit build on the mac side, and still mac does not fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>917404</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-14 20:43:41 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 208776 [details])
&gt; &gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:111
&gt; &gt; +    return jsString(exec, &quot;&quot;);
&gt; 
&gt; Should be:
&gt; 
&gt;     return vm-&gt;smallStrings.emptyString();
&gt; 
&gt; But why specifically the empty string?

At this point in the code if the JSValue had any type, it would have been picked out. This piece of code is used to stringily a JSValue for the error object message. There is also a stipulation that this function cannot be allowed to throw another error so the normal method of calling toString() can not be used.

The empty string was selected because there was no type to send back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919184</commentid>
    <comment_count>10</comment_count>
      <attachid>209223</attachid>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-20 13:14:06 -0700</bug_when>
    <thetext>Created attachment 209223
winLauncher Patch

This patch will fix the problem on win launcher that is causing it to crash. I have created a separate bugzilla report to look into why the JSValue isEmpty() in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919185</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-20 13:15:05 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=209223) [details]
&gt; winLauncher Patch
&gt; 
&gt; This patch will fix the problem on win launcher that is causing it to crash. I have created a separate bugzilla report to look into why the JSValue isEmpty() in the first place.

The new bugzilla bug for follow up: https://bugs.webkit.org/show_bug.cgi?id=120080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919196</commentid>
    <comment_count>12</comment_count>
      <attachid>209223</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-20 13:41:48 -0700</bug_when>
    <thetext>Comment on attachment 209223
winLauncher Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Added a check to make sure that the JSValue was an object before casting it as an object. Also, In case the JSValue was has no type

&quot;Also, In&quot; should be &quot;Also, in&quot;.

JSValues always have a type. The type in question here is the empty value (&quot;JSValue()&quot;).

&gt; Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:113
&gt; +    // FIXME: https://bugs.webkit.org/show_bug.cgi?id=120080 The JSValue here should never be empty here.

&quot;here&quot; is twice in this sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919219</commentid>
    <comment_count>13</comment_count>
      <attachid>209228</attachid>
    <who name="Chris Curtis">chris_curtis</who>
    <bug_when>2013-08-20 14:05:09 -0700</bug_when>
    <thetext>Created attachment 209228
patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919934</commentid>
    <comment_count>14</comment_count>
      <attachid>209228</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-08-22 12:21:30 -0700</bug_when>
    <thetext>Comment on attachment 209228
patch2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919940</commentid>
    <comment_count>15</comment_count>
      <attachid>209228</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 12:43:13 -0700</bug_when>
    <thetext>Comment on attachment 209228
patch2

Clearing flags on attachment: 209228

Committed r154457: &lt;http://trac.webkit.org/changeset/154457&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919941</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-22 12:43:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>919967</commentid>
    <comment_count>17</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-08-22 14:24:34 -0700</bug_when>
    <thetext>Why no test? Darin even mentioned we should have a test in an earlier review.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208776</attachid>
            <date>2013-08-14 17:21:55 -0700</date>
            <delta_ts>2013-08-20 13:14:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>fix.diff</filename>
            <type>text/plain</type>
            <size>1737</size>
            <attacher name="Chris Curtis">chris_curtis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDEzLTA4LTE0ICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgorCisg
ICAgICAgIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSgpIHNob3VsZCBub3QgYXNzdW1lIGVycm9y
IHZhbHVlIGlzIGFuIE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE5ODEyCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGUgSlNWYWx1ZSBpcyB0cnlpbmcgdG8gYmUgc3RyaW5naWZp
ZWQgaW4gYSBzYWZlIG1hbm5lciBmb3IgYW4gZXJyb3Igb2JqZWN0IG1lc3NhZ2UuCisgICAgICAg
IFRoZSBsYXN0IGNhc2UgYXNzdW1lZCB0aGF0IGl0IHdhcyBhbiBvYmplY3QuIEZvciB0aGlzIGJ1
ZywgdGhlIEpTVmFsdWUgZXZhbHVhdGVkIGFzIAorICAgICAgICBwcmltYXRpdmUgb25seS4gCisg
ICAgICAgIEFkZGVkIGEgbGFzdCByZXNvcnQgY2FzZSB0aGF0IHJldHVybnMgYW4gZW1wdHkgc3Ry
aW5nLiAKKyAgICAgICAgKiBydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAo
SlNDOjplcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUpOgorCiAyMDEzLTA4LTE0ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeGVkIGppdCBvbiBXaW42NC4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCShyZXZpc2lvbiAxNTQwNjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDggKzEwNiw5
IEBAIEpTU3RyaW5nKiBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoRXhlY1MKICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYpOwogICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3QsIGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAg
ICAgICAgICAgICByZXR1cm4gdm0uc21hbGxTdHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CisgICAg
ICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBhc09iamVjdCh2KS0+bWV0aG9kVGFibGUoKS0+Y2xh
c3NOYW1lKGFzT2JqZWN0KHYpKSk7CiAgICAgfQotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBh
c09iamVjdCh2KS0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKGFzT2JqZWN0KHYpKSk7CisgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsICIiKTsKIH0KICAgICAKIEpTT2JqZWN0KiBjcmVhdGVFcnJv
cihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFjdG9yeSBlcnJvckZhY3RvcnksIEpTVmFsdWUgdmFs
dWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
</data>
<flag name="review"
          id="230728"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="230729"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209223</attachid>
            <date>2013-08-20 13:14:06 -0700</date>
            <delta_ts>2013-08-20 14:05:09 -0700</delta_ts>
            <desc>winLauncher Patch</desc>
            <filename>winPatch.diff</filename>
            <type>text/plain</type>
            <size>1896</size>
            <attacher name="Chris Curtis">chris_curtis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTA4LTIwICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgorCisg
ICAgICAgIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSgpIHNob3VsZCBub3QgYXNzdW1lIGVycm9y
IHZhbHVlIGlzIGFuIE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE5ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgYSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgSlNWYWx1ZSB3
YXMgYW4gb2JqZWN0IGJlZm9yZSBjYXN0aW5nIGl0IGFzIGFuIG9iamVjdC4gQWxzbywgSW4gY2Fz
ZSB0aGUgSlNWYWx1ZSB3YXMgaGFzIG5vIHR5cGUKKyAgICAgICAgdGhlIGZ1bmN0aW9uIG5vdyBy
ZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcuIAorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHA6CisgICAgICAgIChKU0M6OmVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSk6CisKIDIw
MTMtMDgtMjAgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAg
ICAgICA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTE5OTE5PiBDb25jdXJyZW50IEpJVCBjcmFzaGVz
IGluIHZhcmlvdXMgZmFzdC9qcy9kZmctKiB0ZXN0cyB3aGlsZSB0aGUgbWFpbiB0aHJlYWQgaXMg
c2V0dGluZyBpbm5lckhUTUwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCShyZXZpc2lvbiAxNTQzNTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA2LDggKzEwNiwxMiBAQCBKU1N0cmluZyogZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVl
KEV4ZWNTCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2KTsKICAgICAgICAg
aWYgKG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkg
IT0gQ2FsbFR5cGVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHZtLnNtYWxsU3RyaW5ncy5mdW5j
dGlvblN0cmluZygpOworICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgb2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5jbGFzc05hbWUob2JqZWN0KSk7CiAgICAgfQotICAgIHJldHVybiBqc1N0cmlu
ZyhleGVjLCBhc09iamVjdCh2KS0+bWV0aG9kVGFibGUoKS0+Y2xhc3NOYW1lKGFzT2JqZWN0KHYp
KSk7CisgICAgCisgICAgQVNTRVJUKHYuaXNFbXB0eSgpKTsKKyAgICAvLyBGSVhNRTogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDA4MCBUaGUgSlNWYWx1ZSBoZXJl
IHNob3VsZCBuZXZlciBiZSBlbXB0eSBoZXJlLgorICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3Mu
ZW1wdHlTdHJpbmcoKTsKIH0KICAgICAKIEpTT2JqZWN0KiBjcmVhdGVFcnJvcihFeGVjU3RhdGUq
IGV4ZWMsIEVycm9yRmFjdG9yeSBlcnJvckZhY3RvcnksIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209228</attachid>
            <date>2013-08-20 14:05:09 -0700</date>
            <delta_ts>2013-08-22 12:43:13 -0700</delta_ts>
            <desc>patch2</desc>
            <filename>winPatch.diff</filename>
            <type>text/plain</type>
            <size>1914</size>
            <attacher name="Chris Curtis">chris_curtis</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MzUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEzLTA4LTIwICBDaHJpcyBDdXJ0aXMgIDxjaHJpc19jdXJ0aXNAYXBwbGUuY29tPgorCisg
ICAgICAgIGVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSgpIHNob3VsZCBub3QgYXNzdW1lIGVycm9y
IHZhbHVlIGlzIGFuIE9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE5ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkZWQgYSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCB0aGUgSlNWYWx1ZSB3
YXMgYW4gb2JqZWN0IGJlZm9yZSBjYXN0aW5nIGl0IGFzIGFuIG9iamVjdC4gQWxzbywgaW4gY2Fz
ZSB0aGUgcGFyYW1ldGVyaXplZCBKU1ZhbHVlCisgICAgICAgIGhhcyBubyB0eXBlLCB0aGUgZnVu
Y3Rpb24gbm93IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZy4gCisgICAgICAgICogcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6ZXJyb3JEZXNjcmlwdGlvbkZvclZh
bHVlKToKKwogMjAxMy0wOC0yMCAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUu
Y29tPgogCiAgICAgICAgIDxodHRwczovL3dlYmtpdC5vcmcvYi8xMTk5MTk+IENvbmN1cnJlbnQg
SklUIGNyYXNoZXMgaW4gdmFyaW91cyBmYXN0L2pzL2RmZy0qIHRlc3RzIHdoaWxlIHRoZSBtYWlu
IHRocmVhZCBpcyBzZXR0aW5nIGlubmVySFRNTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDE1NDM1MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsOCArMTA2LDEyIEBAIEpTU3RyaW5nKiBlcnJvckRlc2NyaXB0
aW9uRm9yVmFsdWUoRXhlY1MKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHYp
OwogICAgICAgICBpZiAob2JqZWN0LT5tZXRob2RUYWJsZSgpLT5nZXRDYWxsRGF0YShvYmplY3Qs
IGNhbGxEYXRhKSAhPSBDYWxsVHlwZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gdm0uc21hbGxT
dHJpbmdzLmZ1bmN0aW9uU3RyaW5nKCk7CisgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBv
YmplY3QtPm1ldGhvZFRhYmxlKCktPmNsYXNzTmFtZShvYmplY3QpKTsKICAgICB9Ci0gICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHYpLT5tZXRob2RUYWJsZSgpLT5jbGFzc05hbWUo
YXNPYmplY3QodikpKTsKKyAgICAKKyAgICBBU1NFUlQodi5pc0VtcHR5KCkpOworICAgIC8vIEZJ
WE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwMDgwIFRoZSBK
U1ZhbHVlIHNob3VsZCBuZXZlciBiZSBlbXB0eSBpbiB0aGlzIGZ1bmN0aW9uLgorICAgIHJldHVy
biB2bS5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsKIH0KICAgICAKIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVycm9yRmFjdG9yeSBlcnJvckZhY3RvcnksIEpTVmFs
dWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>