zzip_disk_entry_strdup_comment(ZZIP_DISK * disk, struct zzip_disk_entry *entry)
{
    if (! disk || ! entry)
    {
        errno = EINVAL;
        return 0;
    }

    ___ zzip_size_t len = zzip_disk_entry_comment(entry);
    if (! len)
    {
        return strdup(""); /* ENOMEM */
    }

    ___ char *text = zzip_disk_entry_to_comment(entry);
    if ((zzip_byte_t *) text < disk->buffer ||
        (zzip_byte_t *) text + len > disk->endbuf) 
    {
        errno = EBADMSG;
        return 0;
    }

    return _zzip_strndup(text, len); /* ENOMEM */
    ____;
    ____;
}
zzip_disk_entry_strdup_comment(ZZIP_DISK * disk, struct zzip_disk_entry *entry)
{
    if (! disk || ! entry)
    {
        errno = EINVAL;
        return 0;
    }

    ___ zzip_size_t len = zzip_disk_entry_comment(entry);
    if (! len)
    {
        return strdup("");  
    }

    ___ char *text = zzip_disk_entry_to_comment(entry);
    if ((zzip_byte_t *) text < disk->buffer ||
        (zzip_byte_t *) text + len > disk->endbuf) 
    {
        errno = EBADMSG;
        return 0;
    }

    return _zzip_strndup(text, len);  
    ____;
    ____;
}