Ignore:
Timestamp:
Oct 28, 2007, 6:29:48 PM (18 years ago)
Author:
mjs
Message:

JavaScriptCore:

Reviewed by Mark.


  • Added assertions to protect against adding empty or deleted keys to a HashTable
  • wtf/HashTable.h: (WTF::HashTable::lookup): (WTF::HashTable::lookupForWriting): (WTF::HashTable::fullLookupForWriting): (WTF::HashTable::add):

WebCore:

Reviewed by Mark.

  • bindings/js/kjs_window.cpp: (KJS::Window::installTimeout): Avoid putting in or accessing empty or deleted keys. (KJS::Window::clearTimeout): ditto
  • manual-tests/bad-clearTimeout-crash.html: Added. Automated test not possible.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/HashTable.h

    r27176 r27196  
    403403    {
    404404        ASSERT(m_table);
     405#ifndef ASSERT_DISABLED
     406        if (HashFunctions::safeToCompareToEmptyOrDeleted) {
     407            ASSERT(!HashTranslator::equal(KeyTraits::emptyValue(), key));
     408            ASSERT(!HashTranslator::equal(KeyTraits::deletedValue(), key));
     409        }
     410#endif
    405411
    406412        int k = 0;
     
    447453    {
    448454        ASSERT(m_table);
     455#ifndef ASSERT_DISABLED
     456        if (HashFunctions::safeToCompareToEmptyOrDeleted) {
     457            ASSERT(!HashTranslator::equal(KeyTraits::emptyValue(), key));
     458            ASSERT(!HashTranslator::equal(KeyTraits::deletedValue(), key));
     459        }
     460#endif
    449461
    450462        int k = 0;
     
    498510    {
    499511        ASSERT(m_table);
     512#ifndef ASSERT_DISABLED
     513        if (HashFunctions::safeToCompareToEmptyOrDeleted) {
     514            ASSERT(!HashTranslator::equal(KeyTraits::emptyValue(), key));
     515            ASSERT(!HashTranslator::equal(KeyTraits::deletedValue(), key));
     516        }
     517#endif
    500518
    501519        int k = 0;
     
    548566    inline pair<typename HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::iterator, bool> HashTable<Key, Value, Extractor, HashFunctions, Traits, KeyTraits>::add(const T& key, const Extra& extra)
    549567    {
     568#ifndef ASSERT_DISABLED
     569        if (HashFunctions::safeToCompareToEmptyOrDeleted) {
     570            ASSERT(!HashTranslator::equal(KeyTraits::emptyValue(), key));
     571            ASSERT(!HashTranslator::equal(KeyTraits::deletedValue(), key));
     572        }
     573#endif
     574
    550575        invalidateIterators();
    551576
Note: See TracChangeset for help on using the changeset viewer.