<?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>159446</bug_id>
          
          <creation_ts>2016-07-05 17:27:03 -0700</creation_ts>
          <short_desc>RELEASE_ASSERT(!thisObject) in ObjCCallbackFunctionImpl::call when calling JSExport ObjC Constructor without operator new</short_desc>
          <delta_ts>2016-07-05 22:04:44 -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>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208007</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-05 17:27:03 -0700</bug_when>
    <thetext>Summary:
RELEASE_ASSERT(!thisObject) in ObjCCallbackFunctionImpl::call when calling JSExport ObjC Constructor without operator new

Test:
/*
 * shell&gt; xcrun clang -framework Foundation -framework JavaScriptCore construct.m
 */

#import &lt;Foundation/Foundation.h&gt;
#import &lt;JavaScriptCore/JavaScriptCore.h&gt;

@protocol JSFooExports &lt;JSExport&gt;
- (instancetype)initWithName:(NSString *)name;
@end

@interface JSFoo : NSObject &lt;JSFooExports&gt;
- (instancetype)initWithName:(NSString *)name;
@end

@implementation JSFoo
- (instancetype)initWithName:(NSString *)name {
    self = [super init];
    if (!self) return nil;
    NSLog(@&quot;&gt;&gt;&gt; initWithName: %@&quot;, name);
    return self;
}
@end

int main()
{
    JSContext *ctx = [[JSContext alloc] init];
    ctx[@&quot;JSFoo&quot;] = [JSFoo class];
    [ctx evaluateScript:@&quot;JSFoo()&quot;];
    return 0;
}

Steps to Reproduce:
1. Compile + Run test
  =&gt; RELEASE_ASSERT crash immediately

Crash:
Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BREAKPOINT (SIGTRAP)
Exception Codes:       0x0000000000000002, 0x0000000000000000

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000010bdf0e6e JSC::ObjCCallbackFunctionImpl::call(JSContext*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 654 (ObjCCallbackFunction.mm:557)
1   com.apple.JavaScriptCore      	0x000000010bdf0926 JSC::objCCallbackFunctionCallAsFunction(OpaqueJSContext const*, OpaqueJSValue*, OpaqueJSValue*, unsigned long, OpaqueJSValue const* const*, OpaqueJSValue const**) + 262 (ObjCCallbackFunction.mm:462)
2   com.apple.JavaScriptCore      	0x000000010bdf1b7d long long JSC::APICallbackFunction::call&lt;JSC::ObjCCallbackFunction&gt;(JSC::ExecState*) + 573 (APICallbackFunction.h:61)
3   com.apple.JavaScriptCore      	0x000000010bdb15b3 JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) + 595 (LLIntSlowPaths.cpp:1203)
4   com.apple.JavaScriptCore      	0x000000010bdb87ce llint_entry + 24803
5   com.apple.JavaScriptCore      	0x000000010bdb2508 vmEntryToJavaScript + 299
6   com.apple.JavaScriptCore      	0x000000010bc0c2ee JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 158 (JITCode.cpp:81)
7   com.apple.JavaScriptCore      	0x000000010bb65cb5 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) + 17125 (Interpreter.cpp:961)
8   com.apple.JavaScriptCore      	0x000000010b7d0ea5 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) + 469 (Completion.cpp:107)
9   com.apple.JavaScriptCore      	0x000000010bc61d98 JSEvaluateScript + 456 (NakedPtr.h:54)
10  com.apple.JavaScriptCore      	0x000000010bc73639 -[JSContext evaluateScript:withSourceURL:] + 105 (JSContext.mm:102)
11  a.out                         	0x000000010b56ee9b main + 171
12  libdyld.dylib                 	0x00007fff918095ad start + 1
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208009</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-05 17:39:31 -0700</bug_when>
    <thetext>JavaScript Classes disallow calling the constructor without `new`.

&gt; class Foo {}; Foo()
&lt; Exception: TypeError: Cannot call a class constructor

Maybe the ObjC bridge should do the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208010</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-07-05 17:40:41 -0700</bug_when>
    <thetext>JS exception seems like much better behavior than RELEASE_ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208046</commentid>
    <comment_count>3</comment_count>
      <attachid>282842</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-05 19:39:39 -0700</bug_when>
    <thetext>Created attachment 282842
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208047</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-05 19:40:25 -0700</bug_when>
    <thetext>Attachment 282842 did not pass style-queue:


ERROR: Source/JavaScriptCore/API/tests/testapi.mm:1352:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208050</commentid>
    <comment_count>5</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-07-05 19:43:19 -0700</bug_when>
    <thetext>The new testapi output looks like:

&gt; testapi[41761:43777520] TEST: &quot;ObjC Constructor without &apos;new&apos; pre&quot;: PASSED
&gt; testapi[41761:43777520] TypeError: Cannot call a class constructor without |new|
&gt; testapi[41761:43777520] TEST: &quot;ObjC Constructor without &apos;new&apos; post&quot;: PASSED

I went ahead and updated the JavaScript error message for ES6 classes. Other browsers hinted that this was missing &apos;new&apos;, and I think we should do the same:

  Safari Before:
  TypeError: Cannot call a class constructor

  Safari After:
  TypeError: Cannot call a class constructor without |new|


  Chrome:
  TypeError: Class constructor Foo cannot be invoked without &apos;new&apos;(…)

  Firefox:
  TypeError: Cannot call a class constructor without |new|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208054</commentid>
    <comment_count>6</comment_count>
      <attachid>282842</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-05 19:46:04 -0700</bug_when>
    <thetext>Comment on attachment 282842
[PATCH] Proposed Fix

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

r=me

&gt; Source/JavaScriptCore/API/tests/testapi.mm:1337
&gt; +

Please remove this empty line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208073</commentid>
    <comment_count>7</comment_count>
      <attachid>282842</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-05 22:04:40 -0700</bug_when>
    <thetext>Comment on attachment 282842
[PATCH] Proposed Fix

Clearing flags on attachment: 282842

Committed r202846: &lt;http://trac.webkit.org/changeset/202846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208074</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-05 22:04:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282842</attachid>
            <date>2016-07-05 19:39:39 -0700</date>
            <delta_ts>2016-07-05 22:04:40 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>class-constructor-1.patch</filename>
            <type>text/plain</type>
            <size>10156</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZGQ5OTU2Li4xYTdhNWNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTggQEAKIDIwMTYtMDct
MDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBSRUxF
QVNFX0FTU0VSVCghdGhpc09iamVjdCkgaW4gT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpjYWxs
IHdoZW4gY2FsbGluZyBKU0V4cG9ydCBPYmpDIENvbnN0cnVjdG9yIHdpdGhvdXQgb3BlcmF0b3Ig
bmV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpz
L2NsYXNzLXN5bnRheC1jYWxsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9jbGFzcy1zeW50
YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0
LXRlc3RzL2NsYXNzLXN5bnRheC1jYWxsLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9j
bGFzcy1zeW50YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgSW1wcm92ZSBlcnJv
ciBtZXNzYWdlIHdoZW4gY2FsbGluZyBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgJ25ldycu
CisKKzIwMTYtMDctMDUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwog
ICAgICAgICBSRUdSRVNTSU9OIChyMjAyNTI5PykgaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrLW9u
LSogdGVzdHMgYXJlIGZsYWt5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTkyNzIKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MDg3OTM4PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWNhbGwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWNhbGwtZXhwZWN0ZWQudHh0CmluZGV4IDRhODg1
MGEuLjc3YmIxMDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1jYWxs
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtY2FsbC1leHBl
Y3RlZC50eHQKQEAgLTQsMTMgKzQsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQ
QVNTIG5ldyBBCi1QQVNTIEEoKTo6OiJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3IiCitQQVNTIEEoKTo6OiJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3Igd2l0aG91dCB8bmV3fCIKIFBBU1MgbmV3IEIKLVBBU1MgQigpOjo6IlR5cGVFcnJv
cjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciIKK1BBU1MgQigpOjo6IlR5cGVFcnJv
cjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8IgogUEFTUyBu
ZXcgKGNsYXNzIHsgY29uc3RydWN0b3IoKSB7fSB9KSgpCi1QQVNTIChjbGFzcyB7IGNvbnN0cnVj
dG9yKCkge30gfSkoKTo6OiJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0
b3IiCitQQVNTIChjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSkoKTo6OiJUeXBlRXJyb3I6IENh
bm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCIKIFBBU1MgbmV3IChj
bGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9IH0pKCk6OjoiVHlw
ZUVycm9yOiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnc3VwZXIo
KScpIgotUEFTUyAoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVyKCkg
fSB9KSgpOjo6IlR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciIKK1BB
U1MgKGNsYXNzIGV4dGVuZHMgbnVsbCB7IGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpIH0gfSkoKTo6
OiJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3
fCIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWRlZmF1bHQtY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvY2xhc3Mtc3ludGF4LWRlZmF1bHQtY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDI3NWQyNTEuLjRjNjcyZDEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL2NsYXNzLXN5bnRheC1kZWZhdWx0LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9qcy9jbGFzcy1zeW50YXgtZGVmYXVsdC1jb25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQKQEAgLTQsMTEgKzQsMTEgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAog
CiBQQVNTIG5ldyBBIGluc3RhbmNlb2YgQQotUEFTUyBBKCk6OjpUeXBlRXJyb3I6IENhbm5vdCBj
YWxsIGEgY2xhc3MgY29uc3RydWN0b3IKK1BBU1MgQSgpOjo6VHlwZUVycm9yOiBDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wKIFBBU1MgQS5wcm90b3R5cGUuY29u
c3RydWN0b3IgaW5zdGFuY2VvZiBGdW5jdGlvbgogUEFTUyBBLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ci5uYW1lOjo6IkEiCiBQQVNTIG5ldyBCIGluc3RhbmNlb2YgQTsgbmV3IEIgaW5zdGFuY2VvZiBB
Ci1QQVNTIEIoKTo6OlR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3Rvcgor
UEFTUyBCKCk6OjpUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0
aG91dCB8bmV3fAogUEFTUyBCLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lOjo6IkIiCiBQQVNT
IEEgIT09IEIKIFBBU1MgQS5wcm90b3R5cGUuY29uc3RydWN0b3IgIT09IEIucHJvdG90eXBlLmNv
bnN0cnVjdG9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mt
c3ludGF4LWNhbGwuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWNhbGwuanMKaW5kZXggNjY4YjAwOC4uN2I2YWZlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1jYWxsLmpzCisrKyBiL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgtY2FsbC5qcwpAQCAtMzIsMTIgKzMyLDEyIEBAIGZ1
bmN0aW9uIHNob3VsZE5vdFRocm93KHMpIHsKIH0KIAogc2hvdWxkTm90VGhyb3coJ25ldyBBJyk7
Ci1zaG91bGRUaHJvdygnQSgpJywgJyJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29u
c3RydWN0b3IiJyk7CitzaG91bGRUaHJvdygnQSgpJywgJyJUeXBlRXJyb3I6IENhbm5vdCBjYWxs
IGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCInKTsKIHNob3VsZE5vdFRocm93KCdu
ZXcgQicpOwotc2hvdWxkVGhyb3coJ0IoKScsICciVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNs
YXNzIGNvbnN0cnVjdG9yIicpOworc2hvdWxkVGhyb3coJ0IoKScsICciVHlwZUVycm9yOiBDYW5u
b3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiJyk7CiBzaG91bGROb3RU
aHJvdygnbmV3IChjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSkoKScpOwotc2hvdWxkVGhyb3co
JyhjbGFzcyB7IGNvbnN0cnVjdG9yKCkge30gfSkoKScsICciVHlwZUVycm9yOiBDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIicpOworc2hvdWxkVGhyb3coJyhjbGFzcyB7IGNvbnN0cnVj
dG9yKCkge30gfSkoKScsICciVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVj
dG9yIHdpdGhvdXQgfG5ld3wiJyk7CiBzaG91bGRUaHJvdygnbmV3IChjbGFzcyBleHRlbmRzIG51
bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9IH0pKCknLCAnIlR5cGVFcnJvcjogZnVuY3Rp
b24gaXMgbm90IGEgY29uc3RydWN0b3IgKGV2YWx1YXRpbmcgXCdzdXBlcigpXCcpIicpOwotc2hv
dWxkVGhyb3coJyhjbGFzcyBleHRlbmRzIG51bGwgeyBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoKSB9
IH0pKCknLCAnIlR5cGVFcnJvcjogQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciInKTsK
K3Nob3VsZFRocm93KCcoY2xhc3MgZXh0ZW5kcyBudWxsIHsgY29uc3RydWN0b3IoKSB7IHN1cGVy
KCkgfSB9KSgpJywgJyJUeXBlRXJyb3I6IENhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Ig
d2l0aG91dCB8bmV3fCInKTsKIAogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4LWRlZmF1bHQt
Y29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY2xhc3Mtc3ludGF4
LWRlZmF1bHQtY29uc3RydWN0b3IuanMKaW5kZXggZWVjNGYzMy4uYjk1NDU2ZiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NsYXNzLXN5bnRheC1kZWZhdWx0LWNvbnN0
cnVjdG9yLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9jbGFzcy1zeW50YXgt
ZGVmYXVsdC1jb25zdHJ1Y3Rvci5qcwpAQCAtNDMsMTEgKzQzLDExIEBAIGNsYXNzIEEgeyB9Owog
Y2xhc3MgQiBleHRlbmRzIEEgeyB9OwogCiBzaG91bGRCZVRydWUoJ25ldyBBIGluc3RhbmNlb2Yg
QScpOwotc2hvdWxkVGhyb3coJ0EoKScsICciVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNz
IGNvbnN0cnVjdG9yIicpOworc2hvdWxkVGhyb3coJ0EoKScsICciVHlwZUVycm9yOiBDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiJyk7CiBzaG91bGRCZVRydWUo
J0EucHJvdG90eXBlLmNvbnN0cnVjdG9yIGluc3RhbmNlb2YgRnVuY3Rpb24nKTsKIHNob3VsZEJl
KCdBLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5uYW1lJywgJyJBIicpOwogc2hvdWxkQmVUcnVlKCdu
ZXcgQiBpbnN0YW5jZW9mIEE7IG5ldyBCIGluc3RhbmNlb2YgQScpOwotc2hvdWxkVGhyb3coJ0Io
KScsICciVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIicpOworc2hv
dWxkVGhyb3coJ0IoKScsICciVHlwZUVycm9yOiBDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVj
dG9yIHdpdGhvdXQgfG5ld3wiJyk7CiBzaG91bGRCZSgnQi5wcm90b3R5cGUuY29uc3RydWN0b3Iu
bmFtZScsICciQiInKTsKIHNob3VsZEJlVHJ1ZSgnQSAhPT0gQicpOwogc2hvdWxkQmVUcnVlKCdB
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciAhPT0gQi5wcm90b3R5cGUuY29uc3RydWN0b3InKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24u
bW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmlu
ZGV4IGI0NTk4ZTUuLjEwYjMwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbQpAQCAtNDI4LDYgKzQyOCw4IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIENhbGxiYWNrVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CisKICAgICBib29sIGlzQ29uc3RydWN0aWJsZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gISF3cmFwcGVkQmxvY2soKSB8fCBtX3R5cGUgPT0gQ2FsbGJhY2tJbml0TWV0aG9kOwpA
QCAtNDU1LDYgKzQ1NywxMiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBvYmpDQ2FsbGJhY2tGdW5jdGlv
bkNhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LAogICAgIE9iakNDYWxs
YmFja0Z1bmN0aW9uSW1wbCogaW1wbCA9IGNhbGxiYWNrLT5pbXBsKCk7CiAgICAgSlNDb250ZXh0
ICpjb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjp0b0ds
b2JhbFJlZihjYWxsYmFjay0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSldOwogCisgICAg
aWYgKGltcGwtPnR5cGUoKSA9PSBDYWxsYmFja0luaXRNZXRob2QpIHsKKyAgICAgICAgSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwor
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250
ZXh0UmVmKSwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdp
dGhvdXQgfG5ld3wiKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dFJlZik7CisgICAgfQorCiAgICAgQ2FsbGJhY2tEYXRhIGNhbGxiYWNrRGF0YTsKICAgICBK
U1ZhbHVlUmVmIHJlc3VsdDsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQppbmRleCA2M2M2YzBiLi42ZDZlZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCkBAIC0xMzM0LDYgKzEz
MzQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSU1haW4oKQogICAgICAgICAgICAg
fSBcCiAgICAgICAgIH0pKCkiXTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJzaG91bGRuJ3QgYmUg
YWJsZSB0byBjb25zdHJ1Y3QgQ2xhc3NDIiwgIVtjYW5Db25zdHJ1Y3RDbGFzc0MgdG9Cb29sXSk7
CisKICAgICAgICAgSlNWYWx1ZSAqY2FuQ29uc3RydWN0Q2xhc3NDUHJpbWUgPSBbY29udGV4dCBl
dmFsdWF0ZVNjcmlwdDpAIihmdW5jdGlvbigpIHsgXAogICAgICAgICAgICAgdHJ5IHsgXAogICAg
ICAgICAgICAgICAgIChuZXcgQ2xhc3NDUHJpbWUoMSkpOyBcCkBAIC0xMzQ3LDYgKzEzNDgsMTkg
QEAgc3RhdGljIHZvaWQgdGVzdE9iamVjdGl2ZUNBUElNYWluKCkKIAogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewogICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10g
aW5pdF07CisgICAgICAgIGNvbnRleHRbQCJDbGFzc0EiXSA9IFtDbGFzc0EgY2xhc3NdOworICAg
ICAgICBjb250ZXh0LmV4Y2VwdGlvbkhhbmRsZXIgPSBeKEpTQ29udGV4dCAqY29udGV4dCwgSlNW
YWx1ZSAqZXhjZXB0aW9uKSB7CisgICAgICAgICAgICBOU0xvZyhAIiVAIiwgW2V4Y2VwdGlvbiB0
b1N0cmluZ10pOworICAgICAgICAgICAgY29udGV4dC5leGNlcHRpb24gPSBleGNlcHRpb247Cisg
ICAgICAgIH07CisKKyAgICAgICAgY2hlY2tSZXN1bHQoQCJPYmpDIENvbnN0cnVjdG9yIHdpdGhv
dXQgJ25ldycgcHJlIiwgIWNvbnRleHQuZXhjZXB0aW9uKTsKKyAgICAgICAgW2NvbnRleHQgZXZh
bHVhdGVTY3JpcHQ6QCJDbGFzc0EoNDIpIl07CisgICAgICAgIGNoZWNrUmVzdWx0KEAiT2JqQyBD
b25zdHJ1Y3RvciB3aXRob3V0ICduZXcnIHBvc3QiLCBjb250ZXh0LmV4Y2VwdGlvbik7CisgICAg
fQorCisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9
IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0XTsKICAgICAgICAgY29udGV4dFtAIkNsYXNzRCJdID0g
W0NsYXNzRCBjbGFzc107CiAgICAgICAgIGNvbnRleHRbQCJDbGFzc0UiXSA9IFtDbGFzc0UgY2xh
c3NdOwogICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMDQwODA0Mi4uM2FlMDY3
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTYtMDctMDUg
IEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBSRUxFQVNF
X0FTU0VSVCghdGhpc09iamVjdCkgaW4gT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpjYWxsIHdo
ZW4gY2FsbGluZyBKU0V4cG9ydCBPYmpDIENvbnN0cnVjdG9yIHdpdGhvdXQgb3BlcmF0b3IgbmV3
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk0NDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUcmVhdCBP
YmpDIEpTRXhwb3J0IGluaXQgY29uc3RydWN0b3JzIGxpa2UgRVM2IENsYXNzIENvbnN0cnVjdG9y
cworICAgICAgICBhbmQgdGhyb3cgYSBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgd2l0aG91dCAnbmV3
Jy4KKworICAgICAgICAqIEFQSS9PYmpDQ2FsbGJhY2tGdW5jdGlvbi5tbToKKyAgICAgICAgKEpT
Qzo6T2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjp0eXBlKToKKyAgICAgICAgKEpTQzo6b2JqQ0Nh
bGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbik6CisgICAgICAgIFdoZW4gY2FsbGluZyBhbiBp
bml0IG1ldGhvZCBhcyBhIGZ1bmN0aW9uIGluc3RlYWQgb2YgY29uc3RydWN0aW9uCisgICAgICAg
IHRocm93IGEgVHlwZUVycm9yLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgSW1wcm92ZSBlcnJvciBtZXNzYWdlLgorCisgICAgICAgICogQVBJ
L3Rlc3RzL3Rlc3RhcGkubW06CisgICAgICAgICh0ZXN0T2JqZWN0aXZlQ0FQSU1haW4pOgorICAg
ICAgICBUZXN0IHdlIGdldCBhbiBleGNlcHRpb24gd2hlbiBjYWxsaW5nIGFuIE9iakMgY29uc3Ry
dWN0b3Igd2l0aG91dCAnbmV3Jy4KKwogMjAxNi0wNy0wNSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8
b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFR5cG8gZml4IGFmdGVyIHIyMDIyMTQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAKaW5kZXggYmMyYWZjNi4uYjUwZjU5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTU2
NCw3ICs1NjQsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZt
LCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgZW1pdENyZWF0ZVRoaXMoJm1fdGhpc1JlZ2lzdGVyKTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3JLaW5kKCkgIT0gQ29uc3RydWN0b3JL
aW5kOjpOb25lKQotICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVF
cnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Iik7CiAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRUb1RoaXMg
PSBmYWxzZTsKICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8
IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Njb3BlTm9kZS0+ZG9BbnlJbm5lckFycm93RnVu
Y3Rpb25zVXNlVGhpcygpIHx8IG1fc2NvcGVOb2RlLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNV
c2VFdmFsKCkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>