@staticmethod
def _read_ptrs(fp, ptr, ptr_size):
    """Read a NULL-terminated array of pointers"""
    fp.seek(ptr)
    chunk = fp.read(50 * ptr_size)
    chunks = [chunk]
    while chunk.find(b'\x00' * ptr_size) == -1:
        chunk = fp.read(50 * ptr_size)
        if not chunk or len(chunks) > 10:
            break
        chunks.append(chunk)
    data = b''.join(chunks)
    data = data[:data.find(b'\x00' * ptr_size)]
    return int(len(data) / ptr_size), data
