You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2015/09/23 13:35:05 UTC
svn commit: r1704821 -
/subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c
Author: rhuijben
Date: Wed Sep 23 11:35:02 2015
New Revision: 1704821
URL: http://svn.apache.org/viewvc?rev=1704821&view=rev
Log:
Fix some x86 vs x64 issues in the Win32 crash report handling.
Found by: Visual Studio 2015
* subversion/libsvn_subr/win32_crashrpt.c
(FORMAT_PTR): Define integer as pointer sized to properly handle format
checks via the "I" prefix.
(write_module_info_callback): Properly handle always int64 value.
(format_basic_type,
format_value): Pass guaranteed right type on x86 and x64.
Modified:
subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c
Modified: subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c?rev=1704821&r1=1704820&r2=1704821&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c (original)
+++ subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c Wed Sep 23 11:35:02 2015
@@ -53,9 +53,9 @@ HANDLE dbghelp_dll = INVALID_HANDLE_VALU
#define LOGFILE_PREFIX "svn-crash-log"
#if defined(_M_IX86)
-#define FORMAT_PTR "0x%08x"
+#define FORMAT_PTR "0x%08Ix"
#elif defined(_M_X64)
-#define FORMAT_PTR "0x%016I64x"
+#define FORMAT_PTR "0x%016Ix"
#endif
/*** Code. ***/
@@ -171,7 +171,7 @@ write_module_info_callback(void *data,
MINIDUMP_MODULE_CALLBACK module = callback_input->Module;
char *buf = convert_wbcs_to_ansi(module.FullPath);
- fprintf(log_file, FORMAT_PTR, module.BaseOfImage);
+ fprintf(log_file, FORMAT_PTR, (INT_PTR)module.BaseOfImage);
fprintf(log_file, " %s", buf);
free(buf);
@@ -302,7 +302,7 @@ format_basic_type(char *buf, DWORD basic
break;
default:
sprintf(buf, "[unhandled type 0x%08x of length " FORMAT_PTR "]",
- basic_type, length);
+ basic_type, (INT_PTR)length);
break;
}
}
@@ -341,7 +341,7 @@ format_value(char *value_str, DWORD64 mo
if (ptr == 0)
sprintf(value_str, "(%s) " FORMAT_PTR,
- type_name, (DWORD_PTR *)value_addr);
+ type_name, (INT_PTR)(DWORD_PTR *)value_addr);
else if (ptr == 1)
sprintf(value_str, "(%s *) " FORMAT_PTR,
type_name, *(DWORD_PTR *)value_addr);