The assertions are stripped for some binary builds (debian does that currently with setting NDEBUG).
We can't rely on the asserts for input verification, but it helps debugging.

We have this assertion/return combination for many functions for quite some time. I only made sure we do that on every function the same.

The point of -1 is to make it explicit that this can't be a real track number or index. Not sure how that can be misleading.
Returning 0 is also an option, though. That is what happened previously when the disc structure was first initialized to 0. I still would like to make it explicit to make sure there is nothing returned from a half-written disc structure.