# # # patch "ChangeLog" # from [538d13f3793a2762a6bf9b1c8ad56a8d8f1fbbf0] # to [7af46e822ebe7f4d0e5821a17164dffdf842354e] # # patch "win32/os_strerror.cc" # from [80c09484c7974d2b4c07d9ab476e3c744eb79a56] # to [db47c358d71ed575eb64a372ce2275244a6af4f2] # ============================================================ --- ChangeLog 538d13f3793a2762a6bf9b1c8ad56a8d8f1fbbf0 +++ ChangeLog 7af46e822ebe7f4d0e5821a17164dffdf842354e @@ -1,3 +1,7 @@ +2007-02-07 Matthew Gregan + + * win32/os_strerror.c (os_strerror): Clean up string handling. + 2007-02-05 Markus Schiltknecht * tests/test_a_merge_8/*: @@ -23,7 +27,7 @@ 2007-02-05 Derek Scherger (via Richard Levitte ) ============================================================ --- win32/os_strerror.cc 80c09484c7974d2b4c07d9ab476e3c744eb79a56 +++ win32/os_strerror.cc db47c358d71ed575eb64a372ce2275244a6af4f2 @@ -20,12 +20,13 @@ os_strerror(os_err_t errnum) static_cast(0)); if (len == 0) return (F("unknown error code %d") % errnum).str(); + std::string errstr = tstr; + LocalFree(tstr); + // 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; + std::string::size_type end = errstr.find_last_not_of("\r\n"); + if (end != std::string::npos) + errstr.erase(end + 1); + return errstr; }