I assume you also check if track is not NULL to avoid segfaults when calling `getCanonicalLocation`. I get that it works because of lazy evaluation. Is this usually written like that?
Can't we have a small wrapper for askForAccess so that is accepts trackpointers. That would make it more readable the lazy evaluation is not super obvious.