fix r3822 Solaris strerror() invalid error code behaviour depends on version: Solaris 10 returns "Unknown error" and sets errno to EINVAL, Solaris 9 returns "Unknown error" and leaves errno intact, Solaris 2 returns NULL.