From: Paolo Molaro Date: Mon, 5 Dec 2011 14:44:51 +0000 (+0100) Subject: Avoid assert and crash when allocating smaller large objects in sgen. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=5003aa76236823cb118a7e91c93dbc715bd0a608;p=mono.git Avoid assert and crash when allocating smaller large objects in sgen. --- diff --git a/mono/metadata/sgen-los.c b/mono/metadata/sgen-los.c index 3e0b0bbacde..67266ae0e66 100644 --- a/mono/metadata/sgen-los.c +++ b/mono/metadata/sgen-los.c @@ -246,6 +246,9 @@ get_los_section_memory (size_t size) section = mono_sgen_alloc_os_memory_aligned (LOS_SECTION_SIZE, LOS_SECTION_SIZE, TRUE); + if (!section) + return NULL; + free_chunks = (LOSFreeChunks*)((char*)section + LOS_CHUNK_SIZE); free_chunks->size = LOS_SECTION_SIZE - LOS_CHUNK_SIZE; free_chunks->next_size = los_fast_free_lists [0]; diff --git a/mono/utils/mono-mmap.c b/mono/utils/mono-mmap.c index 0b3aa083da7..b69fa2ac437 100644 --- a/mono/utils/mono-mmap.c +++ b/mono/utils/mono-mmap.c @@ -122,7 +122,8 @@ mono_valloc_aligned (size_t length, size_t alignment, int flags) char *mem = VirtualAlloc (NULL, length + alignment, MEM_RESERVE, prot); char *aligned; - g_assert (mem); + if (!mem) + return NULL; aligned = aligned_address (mem, length, alignment); @@ -662,7 +663,8 @@ mono_valloc_aligned (size_t size, size_t alignment, int flags) char *mem = mono_valloc (NULL, size + alignment, flags); char *aligned; - g_assert (mem); + if (!mem) + return NULL; aligned = aligned_address (mem, size, alignment);