Replace GB_WSU_SAFE_SWPRINTF_TERMINATE with inline code (#145 followup).

r=bryner

http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/f77da3d219cf9388


git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@140 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
mmentovai 2007-04-04 16:13:55 +00:00
parent 825840253b
commit 30fc9ce1c0
6 changed files with 28 additions and 26 deletions

View File

@ -477,7 +477,10 @@ void ExceptionHandler::UpdateNextID() {
wchar_t minidump_path[MAX_PATH];
swprintf(minidump_path, MAX_PATH, L"%s\\%s.dmp",
dump_path_c_, next_minidump_id_c_);
GB_WSU_SAFE_SWPRINTF_TERMINATE(minidump_path, MAX_PATH);
// remove when VC++7.1 is no longer supported
minidump_path[MAX_PATH - 1] = L'\0';
next_minidump_path_ = minidump_path;
next_minidump_path_c_ = next_minidump_path_.c_str();
}

View File

@ -49,8 +49,10 @@ wstring GUIDString::GUIDToWString(GUID *guid) {
guid->Data4[0], guid->Data4[1], guid->Data4[2],
guid->Data4[3], guid->Data4[4], guid->Data4[5],
guid->Data4[6], guid->Data4[7]);
GB_WSU_SAFE_SWPRINTF_TERMINATE(guid_string,
sizeof(guid_string) / sizeof(guid_string[0]));
// remove when VC++7.1 is no longer supported
guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0';
return wstring(guid_string);
}
@ -64,8 +66,10 @@ wstring GUIDString::GUIDToSymbolServerWString(GUID *guid) {
guid->Data4[0], guid->Data4[1], guid->Data4[2],
guid->Data4[3], guid->Data4[4], guid->Data4[5],
guid->Data4[6], guid->Data4[7]);
GB_WSU_SAFE_SWPRINTF_TERMINATE(guid_string,
sizeof(guid_string) / sizeof(guid_string[0]));
// remove when VC++7.1 is no longer supported
guid_string[sizeof(guid_string) / sizeof(guid_string[0]) - 1] = L'\0';
return wstring(guid_string);
}

View File

@ -230,7 +230,10 @@ wstring HTTPUpload::GenerateMultipartBoundary() {
wchar_t temp[kBoundaryLength];
swprintf(temp, kBoundaryLength, L"%s%08X%08X", kBoundaryPrefix, r0, r1);
GB_WSU_SAFE_SWPRINTF_TERMINATE(temp, kBoundaryLength);
// remove when VC++7.1 is no longer supported
temp[kBoundaryLength - 1] = L'\0';
return wstring(temp);
}

View File

@ -725,8 +725,9 @@ bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) {
wchar_t age_string[9];
swprintf(age_string, sizeof(age_string) / sizeof(age_string[0]),
L"%x", age);
GB_WSU_SAFE_SWPRINTF_TERMINATE(age_string,
sizeof(age_string) / sizeof(age_string[0]));
// remove when VC++7.1 is no longer supported
age_string[sizeof(age_string) / sizeof(age_string[0]) - 1] = L'\0';
info->debug_identifier = GUIDString::GUIDToSymbolServerWString(&guid);
info->debug_identifier.append(age_string);
@ -742,9 +743,11 @@ bool PDBSourceLineWriter::GetModuleInfo(PDBModuleInfo *info) {
swprintf(identifier_string,
sizeof(identifier_string) / sizeof(identifier_string[0]),
L"%08X%x", signature, age);
GB_WSU_SAFE_SWPRINTF_TERMINATE(identifier_string,
sizeof(identifier_string) /
sizeof(identifier_string[0]));
// remove when VC++7.1 is no longer supported
identifier_string[sizeof(identifier_string) /
sizeof(identifier_string[0]) - 1] = L'\0';
info->debug_identifier = identifier_string;
}

View File

@ -49,19 +49,6 @@
#define WIN_STRING_FORMAT_LL "I64"
#endif // MSC_VER >= 1400
// When using swprintf, call GB_WSU_SWPRINTF_TERMINATE afterwards using the
// first two arguments to swprintf. This will ensure that the buffer is
// 0-terminated. MSVC8's swprintf always 0-terminates the buffer, so the
// macro is a no-op. This is done in a macro rather than a function
// because the function approach relies on vswprintf, which is incompatible
// with some analysis tools.
#if _MSC_VER >= 1400 // MSVC 2005/8
#define GB_WSU_SAFE_SWPRINTF_TERMINATE(buffer, count);
#else // _MSC_VER >= 1400
#define GB_WSU_SAFE_SWPRINTF_TERMINATE(buffer, count); \
(buffer)[(count) - 1] = L'\0';
#endif // _MSC_VER >= 1400
namespace google_breakpad {
using std::string;

View File

@ -97,8 +97,10 @@ static bool GetFileVersionString(const wchar_t *filename, wstring *version) {
file_info->dwFileVersionMS & 0xffff,
file_info->dwFileVersionLS >> 16,
file_info->dwFileVersionLS & 0xffff);
GB_WSU_SAFE_SWPRINTF_TERMINATE(ver_string,
sizeof(ver_string) / sizeof(ver_string[0]));
// remove when VC++7.1 is no longer supported
ver_string[sizeof(ver_string) / sizeof(ver_string[0]) - 1] = L'\0';
*version = ver_string;
return true;
}