Exemplo n.º 1
0
/**
 * Call this for uninitialized strings. Global variables are
 * automatically cleared, so they don't need initialization.
 * The string will use the memory zone.
 */
ddstring_t *Str_Init(ddstring_t *str)
{
    DENG_ASSERT(str);
    if(!str) return 0;

    if(!Z_IsInited())
    {
        // The memory zone is not available at the moment.
        return Str_InitStd(str);
    }

    memset(str, 0, sizeof(*str));

    // Init the memory management.
    str->memFree = Z_Free;
    str->memAlloc = zoneAlloc;
    str->memCalloc = zoneCalloc;
    return str;
}
Exemplo n.º 2
0
dd_bool Z_Contains(void *ptr)
{
    memvolume_t *volume;
    memblock_t *block = Z_GetBlock(ptr);
    DENG_ASSERT(Z_IsInited());
    if (block->id != LIBDENG_ZONEID)
    {
        // Could be in the zone, but does not look like an allocated block.
        return false;
    }
    // Check which volume is it.
    for (volume = volumeRoot; volume; volume = volume->next)
    {
        if ((char *)ptr > (char *)volume->zone && (char *)ptr < (char *)volume->zone + volume->size)
        {
            // There it is.
            return true;
        }
    }
    return false;
}