Skip to content
This repository has been archived by the owner on Oct 15, 2020. It is now read-only.

Commit

Permalink
deps: update ChakraCore to chakra-core/ChakraCore@483cea69c5
Browse files Browse the repository at this point in the history
[1.8>1.9] [MERGE #4600 @obastemur] es6module: enable test3257

Merge pull request #4600 from obastemur:enable_3257

Fixes #4575

Reviewed-By: chakrabot <chakrabot@users.noreply.github.com>
  • Loading branch information
obastemur authored and chakrabot committed Jan 26, 2018
1 parent eb45384 commit 0fe6352
Show file tree
Hide file tree
Showing 11 changed files with 144 additions and 137 deletions.
188 changes: 100 additions & 88 deletions deps/chakrashim/core/bin/ch/Helpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,117 +200,129 @@ HRESULT Helpers::LoadScriptFromFile(LPCSTR filenameToLoad, LPCSTR& contents, UIN
filename = combinedPathBuffer;
}

//
// Open the file as a binary file to prevent CRT from handling encoding, line-break conversions,
// etc.
//
if (fopen_s(&file, filename, "rb") != 0)
// check if have it registered
AutoString *data;
if (SourceMap::Find(filenameToLoad, strlen(filenameToLoad), &data) ||
SourceMap::Find(filename, strlen(filename), &data))
{
if (!HostConfigFlags::flags.MuteHostErrorMsgIsEnabled)
contents = data->GetString();
if (lengthBytesOut != nullptr)
{
#ifdef _WIN32
DWORD lastError = GetLastError();
char16 wszBuff[MAX_URI_LENGTH];
fprintf(stderr, "Error in opening file '%s' ", filename);
wszBuff[0] = 0;
if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
nullptr,
lastError,
0,
wszBuff,
_countof(wszBuff),
nullptr))
{
fwprintf(stderr, _u(": %s"), wszBuff);
}
fwprintf(stderr, _u("\n"));
#elif defined(_POSIX_VERSION)
fprintf(stderr, "Error in opening file: ");
perror(filename);
#endif
*lengthBytesOut = (UINT) data->GetLength();
}

IfFailGo(E_FAIL);
}

if (file != NULL)
else
{
// Determine the file length, in bytes.
fseek(file, 0, SEEK_END);
lengthBytes = ftell(file);
fseek(file, 0, SEEK_SET);
const size_t bufferLength = lengthBytes + sizeof(BYTE);
pRawBytes = (LPBYTE)malloc(bufferLength);
if (nullptr == pRawBytes)
// Open the file as a binary file to prevent CRT from handling encoding, line-break conversions,
// etc.
if (fopen_s(&file, filename, "rb") != 0)
{
fwprintf(stderr, _u("out of memory"));
IfFailGo(E_OUTOFMEMORY);
}
if (!HostConfigFlags::flags.MuteHostErrorMsgIsEnabled)
{
#ifdef _WIN32
DWORD lastError = GetLastError();
char16 wszBuff[MAX_URI_LENGTH];
fprintf(stderr, "Error in opening file '%s' ", filename);
wszBuff[0] = 0;
if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
nullptr,
lastError,
0,
wszBuff,
_countof(wszBuff),
nullptr))
{
fwprintf(stderr, _u(": %s"), wszBuff);
}
fwprintf(stderr, _u("\n"));
#elif defined(_POSIX_VERSION)
fprintf(stderr, "Error in opening file: ");
perror(filename);
#endif
}

//
// Read the entire content as a binary block.
//
size_t readBytes = fread(pRawBytes, sizeof(BYTE), lengthBytes, file);
if (readBytes < lengthBytes * sizeof(BYTE))
{
IfFailGo(E_FAIL);
}

pRawBytes[lengthBytes] = 0; // Null terminate it. Could be UTF16

//
// Read encoding to make sure it's supported
//
// Warning: The UNICODE buffer for parsing is supposed to be provided by the host.
// This is not a complete read of the encoding. Some encodings like UTF7, UTF1, EBCDIC, SCSU, BOCU could be
// wrongly classified as ANSI
//
if (file != NULL)
{
#pragma warning(push)
// suppressing prefast warning that "readable size is bufferLength bytes but 2 may be read" as bufferLength is clearly > 2 in the code that follows
#pragma warning(disable:6385)
C_ASSERT(sizeof(WCHAR) == 2);
if (bufferLength > 2)
// Determine the file length, in bytes.
fseek(file, 0, SEEK_END);
lengthBytes = ftell(file);
fseek(file, 0, SEEK_SET);
const size_t bufferLength = lengthBytes + sizeof(BYTE);
pRawBytes = (LPBYTE)malloc(bufferLength);
if (nullptr == pRawBytes)
{
__analysis_assume(bufferLength > 2);
#pragma prefast(push)
#pragma prefast(disable:6385, "PREfast incorrectly reports this as an out-of-bound access.");
if ((pRawBytes[0] == 0xFE && pRawBytes[1] == 0xFF) ||
(pRawBytes[0] == 0xFF && pRawBytes[1] == 0xFE) ||
(bufferLength > 4 && pRawBytes[0] == 0x00 && pRawBytes[1] == 0x00 &&
((pRawBytes[2] == 0xFE && pRawBytes[3] == 0xFF) ||
(pRawBytes[2] == 0xFF && pRawBytes[3] == 0xFE))))
fwprintf(stderr, _u("out of memory"));
IfFailGo(E_OUTOFMEMORY);
}

//
// Read the entire content as a binary block.
//
size_t readBytes = fread(pRawBytes, sizeof(BYTE), lengthBytes, file);
if (readBytes < lengthBytes * sizeof(BYTE))
{
IfFailGo(E_FAIL);
}

pRawBytes[lengthBytes] = 0; // Null terminate it. Could be UTF16

//
// Read encoding to make sure it's supported
//
// Warning: The UNICODE buffer for parsing is supposed to be provided by the host.
// This is not a complete read of the encoding. Some encodings like UTF7, UTF1, EBCDIC, SCSU, BOCU could be
// wrongly classified as ANSI
//
{
#pragma warning(push)
// suppressing prefast warning that "readable size is bufferLength bytes but 2 may be read" as bufferLength is clearly > 2 in the code that follows
#pragma warning(disable:6385)
C_ASSERT(sizeof(WCHAR) == 2);
if (bufferLength > 2)
{
// unicode unsupported
fwprintf(stderr, _u("unsupported file encoding. Only ANSI and UTF8 supported"));
IfFailGo(E_UNEXPECTED);
__analysis_assume(bufferLength > 2);
#pragma prefast(push)
#pragma prefast(disable:6385, "PREfast incorrectly reports this as an out-of-bound access.");
if ((pRawBytes[0] == 0xFE && pRawBytes[1] == 0xFF) ||
(pRawBytes[0] == 0xFF && pRawBytes[1] == 0xFE) ||
(bufferLength > 4 && pRawBytes[0] == 0x00 && pRawBytes[1] == 0x00 &&
((pRawBytes[2] == 0xFE && pRawBytes[3] == 0xFF) ||
(pRawBytes[2] == 0xFF && pRawBytes[3] == 0xFE))))

{
// unicode unsupported
fwprintf(stderr, _u("unsupported file encoding. Only ANSI and UTF8 supported"));
IfFailGo(E_UNEXPECTED);
}
#pragma prefast(pop)
}
#pragma prefast(pop)
}
#pragma warning(pop)
}
#pragma warning(pop)
}

contents = reinterpret_cast<LPCSTR>(pRawBytes);
contents = reinterpret_cast<LPCSTR>(pRawBytes);

Error:
if (SUCCEEDED(hr))
{
if (lengthBytesOut)
Error:
if (SUCCEEDED(hr))
{
*lengthBytesOut = lengthBytes;
if (lengthBytesOut)
{
*lengthBytesOut = lengthBytes;
}
}
}

if (file != NULL)
{
fclose(file);
}
if (file != NULL)
{
fclose(file);
}

if (pRawBytes && reinterpret_cast<LPCSTR>(pRawBytes) != contents)
{
free(pRawBytes);
if (pRawBytes && reinterpret_cast<LPCSTR>(pRawBytes) != contents)
{
free(pRawBytes);
}
}

return hr;
Expand Down
7 changes: 6 additions & 1 deletion deps/chakrashim/core/bin/ch/stdafx.h
Original file line number Diff line number Diff line change
Expand Up @@ -316,11 +316,16 @@ class SourceMap
}

static bool Find(AutoString &path, AutoString ** out)
{
return Find(path.GetString(), path.GetLength(), out);
}

static bool Find(LPCSTR path, size_t pathLength, AutoString ** out)
{
FileNode * node = root;
while(node != nullptr)
{
if (strncmp(node->path.GetString(), path.GetString(), path.GetLength()) == 0)
if (strncmp(node->path.GetString(), path, pathLength) == 0)
{
*out = &(node->data);
return true;
Expand Down
7 changes: 0 additions & 7 deletions deps/chakrashim/core/test/es6/bug_issue_3257.js

This file was deleted.

9 changes: 0 additions & 9 deletions deps/chakrashim/core/test/es6/bug_issue_3257_mod/mod0.js

This file was deleted.

7 changes: 0 additions & 7 deletions deps/chakrashim/core/test/es6/bug_issue_3257_mod1.js

This file was deleted.

7 changes: 0 additions & 7 deletions deps/chakrashim/core/test/es6/bug_issue_3257_mod2/mod2.js

This file was deleted.

This file was deleted.

10 changes: 0 additions & 10 deletions deps/chakrashim/core/test/es6/rlexe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1367,16 +1367,6 @@
<tags>BugFix,exclude_sanitize_address</tags>
</default>
</test>
<!-- OS#14303885, disabling failing test until issue is resolved
<test>
<default>
<files>bug_issue_3257.js</files>
<compile-flags>-ESDynamicImport</compile-flags>
<baseline>bug_issue_3257.baseline</baseline>
<tags>BugFix,exclude_sanitize_address</tags>
</default>
</test>
-->
<test>
<default>
<files>typedarray_bugs.js</files>
Expand Down
30 changes: 30 additions & 0 deletions deps/chakrashim/core/test/es6module/bug_issue_3257.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

WScript.RegisterModuleSource("mod0.js", `
import 'mod1.js';
import 'mod2.js';
console.log("mod0");
`);

WScript.RegisterModuleSource("mod1.js",`
import 'mod2.js';
console.log("mod1");
`);

WScript.RegisterModuleSource("mod2.js",`
import 'mod0.js';
console.log("mod2");
`);

WScript.RegisterModuleSource("script0.js",`
console.log("script0");
import('mod1.js');
import('mod2.js');
`);

WScript.LoadScriptFile("mod0.js", "module");
WScript.LoadScriptFile("script0.js");
8 changes: 8 additions & 0 deletions deps/chakrashim/core/test/es6module/rlexe.xml
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,12 @@
<tags>BugFix,exclude_sanitize_address</tags>
</default>
</test>
<test>
<default>
<files>bug_issue_3257.js</files>
<compile-flags>-ESDynamicImport</compile-flags>
<baseline>bug_issue_3257.baseline</baseline>
<tags>BugFix,exclude_sanitize_address</tags>
</default>
</test>
</regress-exe>

0 comments on commit 0fe6352

Please sign in to comment.