diff -pru dillo/src/cache.c dillo.orig/src/cache.c
--- dillo/src/cache.c	Tue Aug  7 19:20:12 2001
+++ dillo.orig/src/cache.c	Thu Aug  9 14:54:30 2001
@@ -344,10 +344,11 @@ void Cache_parse_header(CacheData_t *ent
    }
 
    if ( (Length = Cache_parse_field(header, "Content-Length")) != NULL ) {
-      entry->TotalSize = atol(Length);
+      entry->TotalSize = strtol(Length, NULL, 10);
       g_free(Length);
       entry->Data = g_malloc(entry->TotalSize);
-      memcpy(entry->Data, (char*)io->IOVec.iov_base+HdrLen, io->Status-HdrLen);
+      if (entry->TotalSize)
+	 memcpy(entry->Data, (char*)io->IOVec.iov_base+HdrLen, io->Status-HdrLen);
       entry->ValidSize = io->Status - HdrLen;
       /* Free preallocated buffer */
       if (io->Flags & IOFlag_FreeIOVec)

