@@ -378,19 +378,19 @@ PRE_IVARS_ALIGN - instanceSize; #if defined(OF_WINDOWS) instance = __mingw_aligned_malloc(PRE_IVARS_ALIGN + instanceSize + extraAlignment + extraSize, OF_BIGGEST_ALIGNMENT); - memset(instance, 0, PRE_IVARS_ALIGN + instanceSize + extraAlignment + - extraSize); #elif defined(OF_MSDOS) instance = alignedAlloc(PRE_IVARS_ALIGN + instanceSize + extraAlignment + extraSize, OF_BIGGEST_ALIGNMENT, &offset); - memset(instance, 0, PRE_IVARS_ALIGN + instanceSize + extraAlignment + - extraSize); +#elif defined(OF_SOLARIS) + if (posix_memalign((void **)&instance, OF_BIGGEST_ALIGNMENT, + PRE_IVARS_ALIGN + instanceSize + extraAlignment + extraSize) != 0) + instance = NULL; #else - instance = calloc(1, PRE_IVARS_ALIGN + instanceSize + + instance = malloc(PRE_IVARS_ALIGN + instanceSize + extraAlignment + extraSize); #endif if OF_UNLIKELY (instance == nil) { object_setClass((id)&allocFailedException, @@ -417,10 +417,12 @@ exceptionWithClass: class]; } #endif instance = (OFObject *)(void *)((char *)instance + PRE_IVARS_ALIGN); + + memset(instance, 0, instanceSize + extraAlignment + extraSize); if (!objc_constructInstance(class, instance)) { #if !defined(OF_HAVE_ATOMIC_OPS) && !defined(OF_AMIGAOS) OFSpinlockFree(&((struct PreIvars *)(void *) ((char *)instance - PRE_IVARS_ALIGN))->retainCountSpinlock);