summaryrefslogtreecommitdiffstats
path: root/WebCore/loader/CachedScript.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/loader/CachedScript.cpp')
-rw-r--r--WebCore/loader/CachedScript.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/WebCore/loader/CachedScript.cpp b/WebCore/loader/CachedScript.cpp
index 466a5e9..c96427c 100644
--- a/WebCore/loader/CachedScript.cpp
+++ b/WebCore/loader/CachedScript.cpp
@@ -37,6 +37,7 @@ namespace WebCore {
CachedScript::CachedScript(const String& url, const String& charset)
: CachedResource(url, Script)
+ , m_scriptHasBOMs(SourceCouldHaveBOMs)
, m_decoder(TextResourceDecoder::create("application/javascript", charset))
, m_decodedDataDeletionTimer(this, &CachedScript::decodedDataDeletionTimerFired)
{
@@ -78,6 +79,11 @@ const String& CachedScript::script()
if (!m_script && m_data) {
m_script = m_decoder->decode(m_data->data(), encodedSize());
m_script += m_decoder->flush();
+ if (m_scriptHasBOMs != SourceHasNoBOMs && m_script.length()) {
+ bool hasBOMs = false;
+ m_script = String(m_script.impl()->copyStringWithoutBOMs(m_scriptHasBOMs == SourceHasBOMs, hasBOMs));
+ m_scriptHasBOMs = hasBOMs ? SourceHasBOMs : SourceHasNoBOMs;
+ }
setDecodedSize(m_script.length() * sizeof(UChar));
}