diff --git a/ChangeLog b/ChangeLog index ada263712..8edd1cbb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-10-19 Jonathan Gillaspie + + * Source/Additions/NSError+GNUstepBase.m: Prevent SegFault when FormatMessageW doesn't return a + string on Windows. + 2010-10-19 Wolfgang Lux * Source/NSURL.m (-absoluteURL): Fix test for an absolute URL, diff --git a/Source/Additions/NSError+GNUstepBase.m b/Source/Additions/NSError+GNUstepBase.m index cdfa6e0a4..e535035bf 100644 --- a/Source/Additions/NSError+GNUstepBase.m +++ b/Source/Additions/NSError+GNUstepBase.m @@ -114,14 +114,16 @@ strerror_r(int eno, char *buf, int len) NSDictionary *info; #if defined(__MINGW__) LPVOID lpMsgBuf; - NSString *message; + NSString *message=nil; domain = NSOSStatusErrorDomain; FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR) &lpMsgBuf, 0, NULL ); - message = [NSString stringWithCharacters: lpMsgBuf length: wcslen(lpMsgBuf)]; - LocalFree(lpMsgBuf); + if (lpMsgBuf != NULL) { + message = [NSString stringWithCharacters: lpMsgBuf length: wcslen(lpMsgBuf)]; + LocalFree(lpMsgBuf); + } info = [NSMutableDictionary dictionaryWithObjectsAndKeys: message, NSLocalizedDescriptionKey, nil];