+2006-09-14 MorganL <morlmor@yahoo.com>
+
+ Reviewed by Brady.
+
+ Fixes http://bugzilla.opendarwin.org/show_bug.cgi?id=10845
+ Various bugs/crashes in ResourceLoaderWin with local files.
+
+ * platform/ResourceLoaderInternal.h:
+ (WebCore::ResourceLoaderInternal::ResourceLoaderInternal):
+ * platform/win/ResourceLoaderWin.cpp:
+ (WebCore::ResourceLoaderInternal::~ResourceLoaderInternal):
+ (WebCore::ResourceLoader::fileLoadTimer):
+
2006-09-13 Brady Eidson <beidson@apple.com>
Reviewed by Maciej
#endif
#if USE(WININET)
-typedef void* HANDLE;
+#include <windows.h>
#endif
#if PLATFORM(GDK)
, response(nil)
#endif
#if USE(WININET)
- , m_fileHandle(0)
+ , m_fileHandle(INVALID_HANDLE_VALUE)
, m_fileLoadTimer(job, &ResourceLoader::fileLoadTimer)
, m_resourceHandle(0)
, m_secondaryHandle(0)
, response(nil)
#endif
#if USE(WININET)
- , m_fileHandle(0)
+ , m_fileHandle(INVALID_HANDLE_VALUE)
, m_fileLoadTimer(job, &ResourceLoader::fileLoadTimer)
, m_resourceHandle(0)
, m_secondaryHandle(0)
ResourceLoaderInternal::~ResourceLoaderInternal()
{
- if (m_fileHandle)
+ if (m_fileHandle != INVALID_HANDLE_VALUE)
CloseHandle(m_fileHandle);
}
path = path.mid(1);
d->m_fileHandle = CreateFileA(path.ascii(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ // FIXME: perhaps this error should be reported asynchronously for
+ // consistency.
if (d->m_fileHandle == INVALID_HANDLE_VALUE) {
delete this;
return false;
const int bufferSize = 8192;
char buffer[bufferSize];
result = ReadFile(d->m_fileHandle, &buffer, bufferSize, &bytesRead, NULL);
- d->client->receivedData(this, buffer, bytesRead);
+ if (result && bytesRead)
+ d->client->receivedData(this, buffer, bytesRead);
// Check for end of file.
} while (result && bytesRead);
+ // FIXME: handle errors better
+
CloseHandle(d->m_fileHandle);
- d->m_fileHandle = 0;
+ d->m_fileHandle = INVALID_HANDLE_VALUE;
PlatformDataStruct platformData;
platformData.errorString = 0;