Changeset 24492 in webkit


Ignore:
Timestamp:
Jul 20, 2007 3:52:25 PM (17 years ago)
Author:
andersca
Message:

Reviewed by Darin.

<rdar://problem/5298816> Crash redirecting message, in -[SharedBufferData initWithSharedBuffer:]


Have cached resources keep track of what DocLoader they belong to. This is so that they can remove themselves
from the DocLoader's resource map when they're destroyed when the cache is disabled.


  • html/HTMLImageLoader.cpp: (WebCore::HTMLImageLoader::updateFromElement):
  • loader/Cache.cpp: (WebCore::Cache::requestResource):
  • loader/CachedResource.cpp: (WebCore::CachedResource::CachedResource): (WebCore::CachedResource::~CachedResource):
  • loader/CachedResource.h: (WebCore::CachedResource::setDocLoader):
Location:
trunk/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r24491 r24492  
     12007-07-20  Anders Carlsson  <andersca@apple.com>
     2   
     3        Reviewed by Darin.
     4
     5        <rdar://problem/5298816> Crash redirecting message, in -[SharedBufferData initWithSharedBuffer:]
     6       
     7        Have cached resources keep track of what DocLoader they belong to. This is so that they can remove themselves
     8        from the DocLoader's resource map when they're destroyed when the cache is disabled.
     9       
     10        * html/HTMLImageLoader.cpp:
     11        (WebCore::HTMLImageLoader::updateFromElement):
     12        * loader/Cache.cpp:
     13        (WebCore::Cache::requestResource):
     14        * loader/CachedResource.cpp:
     15        (WebCore::CachedResource::CachedResource):
     16        (WebCore::CachedResource::~CachedResource):
     17        * loader/CachedResource.h:
     18        (WebCore::CachedResource::setDocLoader):
     19
    1202007-07-20  Brady Eidson  <beidson@apple.com>
    221
  • trunk/WebCore/html/HTMLImageLoader.cpp

    r24415 r24492  
    9797            newImage = new CachedImage(doc->docLoader(), parseURL(attr), false /* not for cache */);
    9898            newImage->setLoading(true);
     99            newImage->setDocLoader(doc->docLoader());
    99100            doc->docLoader()->m_docResources.set(newImage->url(), newImage);
    100101        } else
  • trunk/WebCore/loader/Cache.cpp

    r24466 r24492  
    116116            // Kick the resource out of the cache, because the cache is disabled.
    117117            resource->setInCache(false);
     118            resource->setDocLoader(docLoader);
    118119            if (resource->errorOccurred()) {
    119120                // We don't support immediate loads, but we do support immediate failure.
  • trunk/WebCore/loader/CachedResource.cpp

    r24466 r24492  
    2626
    2727#include "Cache.h"
     28#include "DocLoader.h"
    2829#include "FrameLoader.h"
    2930#include "Request.h"
     
    3637    : m_sendResourceLoadCallbacks(sendResourceLoadCallbacks)
    3738    , m_inCache(forCache)
     39    , m_docLoader(0)
    3840{
    3941    m_url = URL;
     
    6769    m_deleted = true;
    6870#endif
     71   
     72    if (m_docLoader)
     73        m_docLoader->removeCachedResource(this);
    6974}
    7075
  • trunk/WebCore/loader/CachedResource.h

    r24466 r24492  
    3535class Cache;
    3636class CachedResourceClient;
     37class DocLoader;
    3738class Request;
    3839
     
    129130    virtual void destroyDecodedData() {};
    130131
     132    void setDocLoader(DocLoader* docLoader) { m_docLoader = docLoader; }
     133   
    131134protected:
    132135    void setEncodedSize(unsigned);
     
    171174   
    172175    bool m_shouldTreatAsLocal;
     176
     177    DocLoader* m_docLoader; // only non-0 for resources that are not in the cache
    173178};
    174179
Note: See TracChangeset for help on using the changeset viewer.