OpenAL detects only a subset of those conditions that could be considered
errors. This is because in many cases error checking would adversely impact
the performance of an error-free program. The state variable alcErrors is
used to obtain error information. When an error is detected by ALC, a flag is
set and the error code is recorded. Further errors, if they occur, do not
affect this recorded code. When alcErrors is read, the error for the given
device is returned and the flag is cleared, so that a further error will
again record its code. If reading alcErrors returns  then there has
been no detectable error since the last time alcErrors (or since the ALC
When an error flag is set, results of ALC operations are undefined only if
ALCOutOfMemory has occurred. In other cases, the command generating the
error is ignored so that it has no effect on ALC state or output buffer
contents. If the error generating command returns a value, it returns zero.
If the generating command modifies values through a pointer argument, no
change is made to these values. These error semantics apply only to ALC
errors, not to system errors such as memory access errors.