# # # patch "ChangeLog" # from [3d2cb26c3f861bb142a55624c66fffd84fe91ddd] # to [35e34c28ec8501d85401273cd5a75829c775d545] # # patch "win32/os_strerror.cc" # from [7c80ac3dec9995059360f9509516e1315cecd63a] # to [80c09484c7974d2b4c07d9ab476e3c744eb79a56] # ============================================================ --- ChangeLog 3d2cb26c3f861bb142a55624c66fffd84fe91ddd +++ ChangeLog 35e34c28ec8501d85401273cd5a75829c775d545 @@ -1,5 +1,8 @@ 2006-06-03 Matthew Gregan + * win32/os_strerror.cc (os_strerror): Trim trailing newlines from + error string returned from FormatMessage. + * sanity.{cc,hh} (format_base): Add dtor to delete pimpl. 2006-06-02 Lapo Luchini ============================================================ --- win32/os_strerror.cc 7c80ac3dec9995059360f9509516e1315cecd63a +++ win32/os_strerror.cc 80c09484c7974d2b4c07d9ab476e3c744eb79a56 @@ -13,11 +13,17 @@ os_strerror(os_err_t errnum) { LPTSTR tstr; - if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM, - 0, errnum, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - reinterpret_cast(&tstr), 0, - static_cast(0)) == 0) + DWORD flags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM; + DWORD len = FormatMessage(flags, 0, errnum, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + reinterpret_cast(&tstr), 0, + static_cast(0)); + if (len == 0) return (F("unknown error code %d") % errnum).str(); + // clobber trailing newlines. + for (LPTSTR p = tstr + len - 1; p > tstr; --p) + if (*p == '\r' || *p == '\n') + *p = '\0'; std::string str = tstr; LocalFree(tstr); return str;