Changeset 47227 in webkit


Ignore:
Timestamp:
Aug 13, 2009 1:18:04 PM (15 years ago)
Author:
eric@webkit.org
Message:

2009-08-13 Christian Plesner Hansen <christian.plesner.hansen@gmail.com>

Reviewed by Dimitri Glazkov.

[v8] Fix atomic string externalization crash.
Atomic string externalization assumes that all non-empty strings
can be externalized which is untrue on 64-bit. This change fixed
that.

https://bugs.webkit.org/show_bug.cgi?id=28215

This bug causes loads of test crashes, no need to add new tests
specifically for this.

  • bindings/v8/V8Binding.cpp: (WebCore::v8StringToAtomicWebCoreString):
Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r47222 r47227  
     12009-08-13  Christian Plesner Hansen  <christian.plesner.hansen@gmail.com>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        [v8] Fix atomic string externalization crash.
     6        Atomic string externalization assumes that all non-empty strings
     7        can be externalized which is untrue on 64-bit.  This change fixed
     8        that.
     9
     10        https://bugs.webkit.org/show_bug.cgi?id=28215
     11
     12        This bug causes loads of test crashes, no need to add new tests
     13        specifically for this.
     14
     15        * bindings/v8/V8Binding.cpp:
     16        (WebCore::v8StringToAtomicWebCoreString):
     17
    1182009-08-13  George Staikos  <george.staikos@torchmobile.com>
    219
  • trunk/WebCore/bindings/v8/V8Binding.cpp

    r47153 r47227  
    155155    WebCoreStringResource* stringResource = WebCoreStringResource::toStringResource(v8String);
    156156    if (!stringResource) {
     157        if (!v8String->CanMakeExternal())
     158            return v8StringToWebCoreString(v8String, DoNotExternalize, AtomicStringType);
    157159        // If this string hasn't been externalized, we force it now.
    158         String plain = v8StringToWebCoreString(v8String, Externalize, AtomicStringType);
    159         // If the string is empty there's no room to cache an atomic
    160         // string so we bail out.
    161         if (plain.isEmpty())
    162             return plain;
     160        v8StringToWebCoreString(v8String, Externalize, AtomicStringType);
    163161        stringResource = WebCoreStringResource::toStringResource(v8String);
    164         ASSERT(stringResource != NULL);
     162        ASSERT(stringResource);
    165163    }
    166164    return stringResource->atomicString();
Note: See TracChangeset for help on using the changeset viewer.