mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-03-21 18:01:15 +00:00
Make zone errors a little more useful.
This commit is contained in:
parent
025c39cc02
commit
7c113a12db
1 changed files with 23 additions and 15 deletions
|
@ -90,6 +90,20 @@ struct memzone_s
|
|||
};
|
||||
|
||||
|
||||
static int
|
||||
z_block_size (memblock_t *block)
|
||||
{
|
||||
return block->size - sizeof (memblock_t) - 4;
|
||||
}
|
||||
|
||||
static int
|
||||
z_offset (memzone_t *zone, memblock_t *block)
|
||||
{
|
||||
int offset = ((byte *) (block + 1) - (byte *) zone);
|
||||
|
||||
return offset / zone->ele_size + zone->offset;
|
||||
}
|
||||
|
||||
VISIBLE void
|
||||
Z_ClearZone (memzone_t *zone, int size, int zone_offset, int ele_size)
|
||||
{
|
||||
|
@ -125,8 +139,16 @@ Z_Free (memzone_t *zone, void *ptr)
|
|||
Sys_Error ("Z_Free: NULL pointer");
|
||||
|
||||
block = (memblock_t *) ((byte *) ptr - sizeof (memblock_t));
|
||||
if (block->id != ZONEID || block->id2 != ZONEID)
|
||||
if (((byte *) block < (byte *) zone)
|
||||
|| (((byte *) block) >= (byte *) zone + zone->size))
|
||||
Sys_Error ("Z_Free: freed a pointer outside of the zone: %x",
|
||||
z_offset (zone, block));
|
||||
if (block->id != ZONEID || block->id2 != ZONEID) {
|
||||
Sys_Printf ("bad pointer %x\n", z_offset (zone, block));
|
||||
Z_Print (zone);
|
||||
fflush (stdout);
|
||||
Sys_Error ("Z_Free: freed a pointer without ZONEID");
|
||||
}
|
||||
if (block->tag == 0)
|
||||
Sys_Error ("Z_Free: freed a freed pointer");
|
||||
|
||||
|
@ -260,20 +282,6 @@ Z_Realloc (memzone_t *zone, void *ptr, int size)
|
|||
return ptr;
|
||||
}
|
||||
|
||||
static int
|
||||
z_block_size (memblock_t *block)
|
||||
{
|
||||
return block->size - sizeof (memblock_t) - 4;
|
||||
}
|
||||
|
||||
static int
|
||||
z_offset (memzone_t *zone, memblock_t *block)
|
||||
{
|
||||
int offset = ((byte *) (block + 1) - (byte *) zone);
|
||||
|
||||
return offset / zone->ele_size + zone->offset;
|
||||
}
|
||||
|
||||
void
|
||||
Z_Print (memzone_t *zone)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue