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);