Fix incorrect block size.

This commit is contained in:
Jordan Bancino 2023-05-25 00:03:17 +00:00
parent 836229fd1a
commit e87a0647e0

View file

@ -51,7 +51,7 @@ struct MemoryInfo
}; };
#define MEM_BOUND_TYPE UInt16 #define MEM_BOUND_TYPE UInt16
#define MEM_BOUND 0xADDE #define MEM_BOUND 0xFFFF
#define MEM_BOUND_LOWER(p) *((MEM_BOUND_TYPE *) p) #define MEM_BOUND_LOWER(p) *((MEM_BOUND_TYPE *) p)
#define MEM_BOUND_UPPER(p, x) *(((MEM_BOUND_TYPE *) (((UInt8 *) p) + x)) + 1) #define MEM_BOUND_UPPER(p, x) *(((MEM_BOUND_TYPE *) (((UInt8 *) p) + x)) + 1)
@ -327,7 +327,7 @@ MemoryAllocated(void)
{ {
if (allocations[i]) if (allocations[i])
{ {
total += allocations[i]->size; total += MemoryInfoGetSize(allocations[i]);
} }
} }
@ -398,7 +398,7 @@ MemoryInfoGetSize(MemoryInfo * a)
return 0; return 0;
} }
return MEM_SIZE_ACTUAL(a->size); return a->size - (2 * sizeof(MEM_BOUND_TYPE));
} }
const char * const char *
@ -445,7 +445,11 @@ void
{ {
if (allocations[i]) if (allocations[i])
{ {
iterFunc(allocations[i], args); MemoryCheck(allocations[i]);
if (iterFunc)
{
iterFunc(allocations[i], args);
}
} }
} }
@ -497,26 +501,28 @@ MemoryDefaultHook(MemoryAction a, MemoryInfo * i, void *args)
switch (a) switch (a)
{ {
case MEMORY_BAD_POINTER: case MEMORY_BAD_POINTER:
write(STDERR_FILENO, "Bad pointer: 0x", 15); write(STDOUT_FILENO, "Bad pointer: 0x", 15);
break; break;
case MEMORY_CORRUPTED: case MEMORY_CORRUPTED:
write(STDERR_FILENO, "Corrupted block: 0x", 19); write(STDOUT_FILENO, "Corrupted block: 0x", 19);
break; break;
default: default:
return; return;
} }
write(STDERR_FILENO, buf, len); write(STDOUT_FILENO, buf, len);
write(STDERR_FILENO, " to 0x", 6); write(STDOUT_FILENO, " to 0x", 6);
len = HexPtr(MemoryInfoGetSize(i), buf, sizeof(buf)); len = HexPtr(MemoryInfoGetSize(i), buf, sizeof(buf));
write(STDERR_FILENO, buf, len); write(STDOUT_FILENO, buf, len);
write(STDERR_FILENO, " bytes at ", 10); write(STDOUT_FILENO, " bytes at ", 10);
write(STDERR_FILENO, MemoryInfoGetFile(i), strlen(MemoryInfoGetFile(i))); write(STDOUT_FILENO, MemoryInfoGetFile(i), strlen(MemoryInfoGetFile(i)));
write(STDERR_FILENO, ":0x", 3); write(STDOUT_FILENO, ":0x", 3);
len = HexPtr(MemoryInfoGetLine(i), buf, sizeof(buf)); len = HexPtr(MemoryInfoGetLine(i), buf, sizeof(buf));
write(STDERR_FILENO, buf, len); write(STDOUT_FILENO, buf, len);
write(STDERR_FILENO, "\n", 1); write(STDOUT_FILENO, "\n", 1);
#if 0
raise(SIGSEGV); raise(SIGSEGV);
#endif
} }
void void