<?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>118996</bug_id>
          
          <creation_ts>2013-07-22 17:02:55 -0700</creation_ts>
          <short_desc>[Windows] Parser asserts because sourceOffset != UINT_MAX</short_desc>
          <delta_ts>2013-07-29 16:49:51 -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>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>roger_fong</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>910875</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-22 17:02:55 -0700</bug_when>
    <thetext>Recent changes in the JSC parser are triggering an assertion in Windows because the sourceOffset is getting set to UINT_MAX.

Source location:
    JSTokenLocation(const JSTokenLocation&amp; location)
    {
        line = location.line;
        lineStartOffset = location.lineStartOffset;
        startOffset = location.startOffset;
        endOffset = location.endOffset;
        sourceOffset = location.sourceOffset;
&gt;&gt;&gt;     ASSERT(sourceOffset != UINT_MAX);
    }


Local state:
-location	{line=3 lineStartOffset=0 startOffset=341 ...}	const JSC::JSTokenLocation &amp;
	line	3	int
	lineStartOffset	0	unsigned int
	startOffset	341	unsigned int
	endOffset	342	unsigned int
	sourceOffset	4294967295	unsigned int
	location.sourceOffset	4294967295	unsigned int
	sourceOffset	4294967295	unsigned int
-this	0x000cca20 {line=3 lineStartOffset=0 startOffset=341 ...}	JSC::JSTokenLocation * const
	line	3	int
	lineStartOffset	0	unsigned int
	startOffset	341	unsigned int
	endOffset	342	unsigned int
	sourceOffset	4294967295	unsigned int

Callstack:
 	WTF.dll!WTFCrash()  Line 339	C++
&gt;	JavaScriptCore.dll!JSC::JSTokenLocation::JSTokenLocation(const JSC::JSTokenLocation &amp; location)  Line 189 + 0x37 bytes	C++
 	JavaScriptCore.dll!JSC::JSToken::JSToken(const JSC::JSToken &amp; __that)  + 0x4c bytes	C++
 	JavaScriptCore.dll!JSC::SourceProviderCacheItem::closeBraceToken()  Line 70 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseFunctionInfo&lt;0,0,JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context, const JSC::Identifier * &amp; name, JSC::ParameterNode * &amp; parameters, JSC::FunctionBodyNode * &amp; body, unsigned int &amp; openBraceOffset, unsigned int &amp; closeBraceOffset, int &amp; bodyStartLine, unsigned int &amp; bodyStartColumn)  Line 847 + 0xf bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseMemberExpression&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 1603 + 0x2b bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseUnaryExpression&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 1698 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseBinaryExpression&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 1214 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseConditionalExpression&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 1175 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseAssignmentExpression&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 1116 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseVarDeclarationList&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context, int &amp; declarations, const JSC::Identifier * &amp; lastIdent, JSC::ExpressionNode * &amp; lastInitializer, JSC::JSTextPosition &amp; identStart, JSC::JSTextPosition &amp; initStart, JSC::JSTextPosition &amp; initEnd)  Line 291 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseVarDeclaration&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 205 + 0x24 bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseStatement&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context, const JSC::Identifier * &amp; directive, unsigned int * directiveLiteralLength)  Line 711 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseSourceElements&lt;1,JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 169 + 0x14 bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseBlockStatement&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 692 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseStatement&lt;JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context, const JSC::Identifier * &amp; directive, unsigned int * directiveLiteralLength)  Line 709 + 0xc bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseSourceElements&lt;0,JSC::ASTBuilder&gt;(JSC::ASTBuilder &amp; context)  Line 169 + 0x14 bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parseInner()  Line 116 + 0xf bytes	C++
 	JavaScriptCore.dll!JSC::Parser&lt;JSC::Lexer&lt;unsigned char&gt; &gt;::parse&lt;JSC::FunctionBodyNode&gt;(JSC::ParserError &amp; error)  Line 1018	C++
 	JavaScriptCore.dll!JSC::parse&lt;JSC::FunctionBodyNode&gt;(JSC::VM * vm, const JSC::SourceCode &amp; source, JSC::FunctionParameters * parameters, const JSC::Identifier &amp; name, JSC::JSParserStrictness strictness, JSC::JSParserMode parserMode, JSC::ParserError &amp; error)  Line 1084 + 0x13 bytes	C++
 	JavaScriptCore.dll!JSC::generateFunctionCodeBlock(JSC::VM &amp; vm, JSC::JSScope * scope, JSC::UnlinkedFunctionExecutable * executable, const JSC::SourceCode &amp; source, JSC::CodeSpecializationKind kind, JSC::DebuggerMode debuggerMode, JSC::ProfilerMode profilerMode, JSC::ParserError &amp; error)  Line 52 + 0x3b bytes	C++
 	JavaScriptCore.dll!JSC::UnlinkedFunctionExecutable::codeBlockFor(JSC::VM &amp; vm, JSC::JSScope * scope, const JSC::SourceCode &amp; source, JSC::CodeSpecializationKind specializationKind, JSC::DebuggerMode debuggerMode, JSC::ProfilerMode profilerMode, JSC::ParserError &amp; error)  Line 161 + 0x25 bytes	C++
 	JavaScriptCore.dll!JSC::FunctionExecutable::produceCodeBlockFor(JSC::JSScope * scope, JSC::CodeSpecializationKind specializationKind, JSC::JSObject * &amp; exception)  Line 503 + 0x31 bytes	C++
 	JavaScriptCore.dll!JSC::FunctionExecutable::compileForCallInternal(JSC::ExecState * exec, JSC::JSScope * scope, JSC::JITCode::JITType jitType, unsigned int bytecodeIndex)  Line 533 + 0x16 bytes	C++
 	JavaScriptCore.dll!JSC::FunctionExecutable::compileForCall(JSC::ExecState * exec, JSC::JSScope * scope)  Line 612 + 0x18 bytes	C++
 	JavaScriptCore.dll!JSC::FunctionExecutable::compileFor(JSC::ExecState * exec, JSC::JSScope * scope, JSC::CodeSpecializationKind kind)  Line 670 + 0x10 bytes	C++
 	JavaScriptCore.dll!JSC::lazyLinkFor(JSC::ExecState * callFrame, JSC::CodeSpecializationKind kind)  Line 2273 + 0x19 bytes	C++
 	JavaScriptCore.dll!cti_vm_lazyLinkCall(void * * args)  Line 2298 + 0xb bytes	C++
 	JavaScriptCore.dll!@cti_op_create_this@4()  + 0x17f bytes	C++
 	JavaScriptCore.dll!JSC::JITCode::execute(JSC::JSStack * stack, JSC::ExecState * callFrame, JSC::VM * vm)  Line 135 + 0x29 bytes	C++
 	JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program, JSC::ExecState * callFrame, JSC::JSObject * thisObj)  Line 951 + 0x28 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 77 + 0x1e bytes	C++
 	WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode &amp; sourceCode, WebCore::DOMWrapperWorld * world)  Line 142 + 0x23 bytes	C++
 	WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode &amp; sourceCode)  Line 158 + 0x16 bytes	C++
 	WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode &amp; sourceCode)  Line 316 + 0x17 bytes	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent(WebCore::PendingScript &amp; pendingScript)  Line 151	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::executeParsingBlockingScript()  Line 123	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::executeParsingBlockingScripts()  Line 201 + 0x8 bytes	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::executeScriptsWaitingForLoad(WebCore::CachedResource * cachedScript)  Line 211	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource * cachedResource)  Line 935	C++
 	WebKit.dll!WebCore::CachedResource::checkNotify()  Line 369 + 0x11 bytes	C++
 	WebKit.dll!WebCore::CachedResource::finishLoading(WebCore::ResourceBuffer * __formal)  Line 386	C++
 	WebKit.dll!WebCore::CachedScript::finishLoading(WebCore::ResourceBuffer * data)  Line 90	C++
 	WebKit.dll!WebCore::SubresourceLoader::didFinishLoading(double finishTime)  Line 284	C++
 	WebKit.dll!WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle * __formal, double finishTime)  Line 489	C++
 	WebKit.dll!WebCore::didFinishLoading(_CFURLConnection * conn, const void * clientInfo)  Line 263	C++
 	CFNetwork.dll!URLConnectionClient::_clientDidFinishLoading(URLConnectionClient::ClientConnectionEventQueue * preQ)  Line 1739 + 0x13 bytes	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e, long count)  Line 2256	C++
 	CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo&lt;enum XClientEvent,XClientEventParams&gt; * e, long count)  Line 2328 + 0x9 bytes	C++
 	CFNetwork.dll!XConnectionEventQueue&lt;enum XClientEvent,XClientEventParams&gt;::processAllEvents()  Line 231	C++
 	CFNetwork.dll!URLConnectionClient::processEvents()  Line 362	C++
 	CFNetwork.dll!MultiplexerSource::perform()  Line 229	C++
 	CoreFoundation.dll!__CFRunLoopDoSources0(__CFRunLoop * rl, __CFRunLoopMode * rlm, unsigned char stopAfterHandle)  Line 41778 + 0xd bytes	C++
 	CoreFoundation.dll!__CFRunLoopRun(__CFRunLoop * rl, __CFRunLoopMode * rlm, double seconds, unsigned char stopAfterHandle, __CFRunLoopMode * previousMode)  Line 42215 + 0xb bytes	C++
 	CoreFoundation.dll!CFRunLoopRunSpecific(__CFRunLoop * rl, const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled)  Line 42411 + 0x12 bytes	C++
 	CoreFoundation.dll!CFRunLoopRun()  Line 42438 + 0x1d bytes	C++
 	WinLauncher.dll!100022e4() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for WinLauncher.dll]	
 	WinLauncher.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow)  Line 211 + 0x16 bytes	C++
 	WinLauncher.exe!__tmainCRTStartup()  Line 547 + 0x1c bytes	C
 	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>911061</commentid>
    <comment_count>1</comment_count>
      <attachid>207334</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-23 09:39:46 -0700</bug_when>
    <thetext>Created attachment 207334
the patch

This bug reports an assertion regarding the value of the sourceOffset field in JSTokenLocation.  Conveniently, that field is no longer needed.  So, we can simply remove it and clean up the code, thereby also removing the assert (which is now moot).

Some background history regarding the sourceOffset field in JSTokenLocation:

The JSTokenLocation sourceOffset field was added in http://trac.webkit.org/changeset/152494 to support some transitional code while that change was being developed.  When all the dust settled, the sourceOffset field was no longer needed (as evident by the fact that the JSTokenLocation &quot;position&quot; methods are not called from anywhere).  The sourceOffset field and associated artifacts should have been removed.

This patch cleans that up.  The patch builds cleanly against trunk r152583 and passes all the javascriptcore tests and relevant layout tests.  Will commence with running the full layout tests after this.  The patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911063</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-23 09:43:37 -0700</bug_when>
    <thetext>I&apos;m glad that the assert will be removed by this change, but was there some underlying problem in the parser that was causing the assert to trigger?

I&apos;m applying the patch and will report back once the build and test is finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911064</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-23 09:47:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m glad that the assert will be removed by this change, but was there some underlying problem in the parser that was causing the assert to trigger?
&gt; 
&gt; I&apos;m applying the patch and will report back once the build and test is finished.

The sourceOffset value was not always available at the time that the JSTokenLocation is constructed.  Proper usage dictates that the user of JSTokenLocation properly initializes the sourceOffset field before copying the JSTokenLocation into another.  That was what the assertion was catching.  This condition of use must not have been satisfied in some code path that manifests only on the Windows port.

However, since the field is actually no longer needed, I didn&apos;t bother to chase down where it wasn&apos;t getting initialized.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911077</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-07-23 10:25:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m applying the patch and will report back once the build and test is finished.

The patch applies cleanly, and resolves the assertion that was preventing the Windows debug bots from running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911080</commentid>
    <comment_count>5</comment_count>
      <attachid>207334</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-07-23 10:41:00 -0700</bug_when>
    <thetext>Comment on attachment 207334
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911085</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-23 10:50:10 -0700</bug_when>
    <thetext>*** Bug 119017 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911189</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2013-07-23 17:41:27 -0700</bug_when>
    <thetext>Thanks for the review.  There are no new layout test failures with this patch.  Landed in r153071: &lt;http://trac.webkit.org/changeset/153071&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912629</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-07-29 16:49:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/14583789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207334</attachid>
            <date>2013-07-23 09:39:46 -0700</date>
            <delta_ts>2013-07-23 10:41:00 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>bug-118996.patch</filename>
            <type>text/plain</type>
            <size>8774</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUzMDUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTA3LTIzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmVkIHVudXNlZCBzb3VyY2VPZmZzZXQgZnJvbSBKU1Rva2VuTG9jYXRpb24uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg5OTYuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbHNvIHJlbW92
ZXMgdGhlIGFzc2VydGlvbiByZXBvcnRlZCBpbiB0aGUgYnVnIGJlY2F1c2UgaXQgaXMgbm93Cisg
ICAgICAgIG1vb3QsIHRoZXJlYnkgcmVzb2x2aW5nIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBpc3N1
ZSBvbiBXaW5kb3dzLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QpOgorICAgICAgICAoSlND
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogcGFy
c2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpsZXgpOgorICAgICAgICAqIHBhcnNlci9M
ZXhlci5oOgorICAgICAgICAoSlNDOjo6OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAq
IHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjo6OlBhcnNlcik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAg
ICAgICAoSlNDOjo6OnBhcnNlRXhwcmVzc2lvbk9yTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAoSlNDOjo6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5z
Lmg6CisgICAgICAgIChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6SlNUb2tlbkxvY2F0aW9uKToKKwog
MjAxMy0wNy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQWRkZWQgYXNzZW1ibHkgZmlsZXMgdG8gV2luZG93cyA2NC1iaXQgYnVpbGRzLgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAkocmV2aXNpb24gMTUyNTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsMTYgKzIw
MiwxNSBAQCBib29sIEFycmF5Tm9kZTo6aXNTaW1wbGVBcnJheSgpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLUFyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3Qo
Vk0qIHZtLCBpbnQgbGluZU51bWJlciwgaW50IHN0YXJ0UG9zaXRpb24sIHVuc2lnbmVkIHNvdXJj
ZU9mZnNldCkgY29uc3QKK0FyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExp
c3QoVk0qIHZtLCBpbnQgbGluZU51bWJlciwgaW50IHN0YXJ0UG9zaXRpb24pIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBw
dHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbihzb3VyY2VPZmZzZXQpOworICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbjsKICAgICBsb2NhdGlvbi5saW5lID0gbGluZU51bWJlcjsKICAgICBsb2NhdGlv
bi5zdGFydE9mZnNldCA9IHN0YXJ0UG9zaXRpb247Ci0gICAgbG9jYXRpb24uc291cmNlT2Zmc2V0
ID0gc291cmNlT2Zmc2V0OwogICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKHZtKSBB
cmd1bWVudExpc3ROb2RlKGxvY2F0aW9uLCBwdHItPnZhbHVlKCkpOwogICAgIEFyZ3VtZW50TGlz
dE5vZGUqIHRhaWwgPSBoZWFkOwogICAgIHB0ciA9IHB0ci0+bmV4dCgpOwpAQCAtNTQ5LDcgKzU0
OCw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6ZW0KICAgICAgICAg
ICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxl
QXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5t
X2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3Iudm0oKSwgMCwgMCwgMCk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+
KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5l
cmF0b3Iudm0oKSwgMCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiByZWFsRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5h
dGlvbihkc3QpLCBiYXNlLmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50
cyBjYWxsQXJndW1lbnRzKGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3Qt
Pm1fZXhwcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAkocmV2
aXNpb24gMTUyNTgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMjMsNyArMTMyMyw2IEBAIHN0YXJ0OgogICAgICAgICByZXR1
cm4gRU9GVE9LOwogICAgIAogICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gY3VycmVu
dE9mZnNldCgpOwotICAgIHRva2VuTG9jYXRpb24tPnNvdXJjZU9mZnNldCA9IG1fc291cmNlT2Zm
c2V0OwogICAgIEFTU0VSVChjdXJyZW50T2Zmc2V0KCkgPj0gY3VycmVudExpbmVTdGFydE9mZnNl
dCgpKTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmgJKHJldmlzaW9uIDE1MjU4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDcgKzM3MCw2IEBAIEFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEUKICAgICB0b2tlbkxvY2F0aW9uLT5s
aW5lU3RhcnRPZmZzZXQgPSBjdXJyZW50TGluZVN0YXJ0T2Zmc2V0KCk7CiAgICAgdG9rZW5Mb2Nh
dGlvbi0+c3RhcnRPZmZzZXQgPSBvZmZzZXRGcm9tU291cmNlUHRyKHN0YXJ0KTsKICAgICB0b2tl
bkxvY2F0aW9uLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgdG9rZW5Mb2NhdGlv
bi0+c291cmNlT2Zmc2V0ID0gbV9zb3VyY2VPZmZzZXQ7CiAgICAgQVNTRVJUKHRva2VuTG9jYXRp
b24tPnN0YXJ0T2Zmc2V0ID49IHRva2VuTG9jYXRpb24tPmxpbmVTdGFydE9mZnNldCk7CiAgICAg
bV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAxNTI1ODMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1Niw3ICs0NTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEVsZW1lbnROb2RlKik7CiAgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiB0b0FyZ3VtZW50TGlzdChWTSosIGludCwgaW50LCB1bnNpZ25lZCkgY29uc3Q7CisgICAg
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KFZNKiwgaW50LCBpbnQpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTUyNTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw2IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoVk0qIHZtLCBjb25zdCAKICAgICBt
X2xleGVyID0gYWRvcHRQdHIobmV3IExleGVyVHlwZSh2bSkpOwogICAgIG1fYXJlbmEgPSBtX3Zt
LT5wYXJzZXJBcmVuYS5nZXQoKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgbV9hcmVu
YSk7Ci0gICAgbV90b2tlbi5tX2xvY2F0aW9uLnNvdXJjZU9mZnNldCA9IHNvdXJjZS5zdGFydE9m
ZnNldCgpOwogICAgIG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBzb3VyY2Uuc3RhcnRP
ZmZzZXQoKTsKICAgICBtX3Rva2VuLm1fbG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gc291cmNl
LnN0YXJ0T2Zmc2V0KCk7CiAKQEAgLTg2MSw3ICs4NjAsNyBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25S
ZXF1aXJlbWVudHMgcmVxdWlyZW1lCiAgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5k
Q2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZU9mZnNldCkgOiAwKSB7CiAgICAgICAgIC8vIElm
IHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24gaW5mbyBtdXN0
IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RNb2RlKCkgfHwg
Y2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmRMb2Nh
dGlvbihtX3NvdXJjZS0+c3RhcnRPZmZzZXQoKSk7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBl
bmRMb2NhdGlvbjsKIAogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gY2FjaGVkSW5mby0+Y2xv
c2VCcmFjZUxpbmU7CiAgICAgICAgIGVuZExvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2FjaGVkSW5m
by0+Y2xvc2VCcmFjZU9mZnNldDsKQEAgLTk2Niw3ICs5NjUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICogc3BlY2lhbCBjYXNlIHRoYXQgbG9va3Mg
Zm9yIGEgY29sb24gYXMgdGhlIG5leHQgY2hhcmFjdGVyIGluIHRoZSBpbnB1dC4KICAgICAgKi8K
ICAgICBWZWN0b3I8TGFiZWxJbmZvPiBsYWJlbHM7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKG1fc291cmNlLT5zdGFydE9mZnNldCgpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b247CiAgICAgZG8gewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAg
IGludCBzdGFydGluZ0xpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTE2MzQsNyArMTYzMyw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAgICBpbnQgZXhwcmVzc2lv
bkxpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZXhwcmVzc2lvbkxpbmVTdGFydCA9IHRva2Vu
TGluZVN0YXJ0KCk7CiAgICAgaW50IG5ld0NvdW50ID0gMDsKLSAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24obV9zb3VyY2UtPnN0YXJ0T2Zmc2V0KCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbjsKICAgICB3aGlsZSAobWF0Y2goTkVXKSkgewogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIG5ld0NvdW50Kys7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJ
KHJldmlzaW9uIDE1MjU4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMzYsNyArMTAzNiw3IEBAIFBhc3NSZWZQdHI8UGFyc2Vk
Tm9kZT4gUGFyc2VyPExleGVyVHlwZT4KIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7
CiAgICAgaWYgKG1fc291cmNlRWxlbWVudHMpIHsKLSAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVu
ZExvY2F0aW9uKG1fc291cmNlLT5zdGFydE9mZnNldCgpKTsKKyAgICAgICAgSlNUb2tlbkxvY2F0
aW9uIGVuZExvY2F0aW9uOwogICAgICAgICBlbmRMb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKTsKICAgICAgICAgZW5kTG9jYXRpb24ubGluZVN0YXJ0T2Zmc2V0ID0gbV9s
ZXhlci0+Y3VycmVudExpbmVTdGFydE9mZnNldCgpOwogICAgICAgICBlbmRMb2NhdGlvbi5zdGFy
dE9mZnNldCA9IG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAkocmV2aXNpb24gMTUyNTgzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDI2ICsxNjEsMTkgQEAgdW5pb24gSlNUb2tlbkRhdGEgewogfTsKIAogc3RydWN0IEpT
VG9rZW5Mb2NhdGlvbiB7Ci0gICAgSlNUb2tlbkxvY2F0aW9uKHVuc2lnbmVkIF9zb3VyY2VPZmZz
ZXQgPSBVSU5UX01BWCkgOiBsaW5lKDApLCBsaW5lU3RhcnRPZmZzZXQoMCksIHN0YXJ0T2Zmc2V0
KDApLCBzb3VyY2VPZmZzZXQoX3NvdXJjZU9mZnNldCkgeyB9CisgICAgSlNUb2tlbkxvY2F0aW9u
KCkgOiBsaW5lKDApLCBsaW5lU3RhcnRPZmZzZXQoMCksIHN0YXJ0T2Zmc2V0KDApIHsgfQogICAg
IEpTVG9rZW5Mb2NhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQogICAgIHsK
ICAgICAgICAgbGluZSA9IGxvY2F0aW9uLmxpbmU7CiAgICAgICAgIGxpbmVTdGFydE9mZnNldCA9
IGxvY2F0aW9uLmxpbmVTdGFydE9mZnNldDsKICAgICAgICAgc3RhcnRPZmZzZXQgPSBsb2NhdGlv
bi5zdGFydE9mZnNldDsKICAgICAgICAgZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0Owot
ICAgICAgICBzb3VyY2VPZmZzZXQgPSBsb2NhdGlvbi5zb3VyY2VPZmZzZXQ7Ci0gICAgICAgIEFT
U0VSVChzb3VyY2VPZmZzZXQgIT0gVUlOVF9NQVgpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgdW5zaWduZWQgbGluZVN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IEFTU0VSVChzb3VyY2VPZmZz
ZXQgIT0gVUlOVF9NQVgpOyByZXR1cm4gbGluZVN0YXJ0T2Zmc2V0IC0gc291cmNlT2Zmc2V0OyB9
Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBzdGFydFBvc2l0aW9uKCkgY29uc3QgeyBBU1NF
UlQoc291cmNlT2Zmc2V0ICE9IFVJTlRfTUFYKTsgcmV0dXJuIHN0YXJ0T2Zmc2V0IC0gc291cmNl
T2Zmc2V0OyB9Ci0gICAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBlbmRQb3NpdGlvbigpIGNvbnN0
IHsgQVNTRVJUKHNvdXJjZU9mZnNldCAhPSBVSU5UX01BWCk7IHJldHVybiBlbmRPZmZzZXQgLSBz
b3VyY2VPZmZzZXQ7IH0KLQogICAgIGludCBsaW5lOwogICAgIHVuc2lnbmVkIGxpbmVTdGFydE9m
ZnNldDsKICAgICB1bnNpZ25lZCBzdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBlbmRPZmZzZXQ7
Ci0gICAgdW5zaWduZWQgc291cmNlT2Zmc2V0OwogfTsKIAogc3RydWN0IEpTVG9rZW4gewo=
</data>
<flag name="review"
          id="229116"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>