Fix rare recursion error in the winVersion module (#12696)
Opened against beta since this PR fixes regression which should be fixed before 2021.2
Link to issue number:
Fixes #12666
Fix-up of #12544
Summary of the issue:
In some rare cases winVersion.getWinVer can cause recursion errors since it calls winVersion._getRunningVersionNameFromWinReg which in turn executes winVersion.getWinVer to check if the currently running version of Windows contains release info in the registry.
Description of how this pull request fixes the issue:
Rather than checking if the current version of Windows contains release info in the registry by comparing it to the lowest version for which this is supported I'm just checking if the necessary info exists in the registry and if not appropriate exceptions are raised.
To avoid pointless registry accesses result of getWinVer is cached - version of Windows on which NVDA is running is not going to change during its lifetime.
* Fix rare recursion error in the winVersion module
* Avoid pointless registry accesses by caching results of `getWinVer` as the version of Windows on which we're running cannot be changed.