From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 1999-10-18 10:04:55
Hi! Jesse Beach found an error in the malloc subroutine. The symptoms are: * malloc() returns NULL even if there is space left on the heap. * malloc() does not return NULL for large allocated blocks, even if there is not enough space left, leading to memory corruption. In fact there is a single line in the subroutine that contains two errors at once. The heap stuff was originally written for a 32 bit DSP with 32 bit data types and a 24 bit address space, and it seems this line was not changed when porting the module. Here is the patch: Index: malloc.c =================================================================== RCS file: /usr/local/cvsroot/uz/c64/cc65/lib/common/malloc.c,v retrieving revision 1.8 diff -r1.8 malloc.c 107c107 < if (_hptr + size >= _hend) { --- > if (((unsigned) _hend) - ((unsigned) _hptr) < size) { The fix will be in the next official version, but I cannot currently promise any release dates. Regards Uz -- Ullrich von Bassewitz uz_at_musoftware.de ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo_at_musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:45 CET