libdisasm: Don't depend on sizeof(void)

Due to operator precedence, the address was first cast to void*
and then incremented, which resulted in an error on windows, as
sizeof(void) is undefined and MSVC takes this seriously. Changing
the precedence to perform the addition first.

R=mark@chromium.org

Review URL: https://codereview.chromium.org/1570843002 .

Patch from Pavel Labath <labath@google.com>.
This commit is contained in:
Pavel Labath 2016-01-08 12:52:04 -05:00 committed by Mark Mentovai
parent 68039850bc
commit 2dda5fefdc

View File

@ -35,7 +35,7 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
if ( offset >= buf_len ) { if ( offset >= buf_len ) {
/* another caller screwup ;) */ /* another caller screwup ;) */
x86_report_error(report_disasm_bounds, (void*)(long)buf_rva+offset); x86_report_error(report_disasm_bounds, (void*)(long)(buf_rva+offset));
return 0; return 0;
} }
@ -53,13 +53,13 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len,
/* check and see if we had an invalid instruction */ /* check and see if we had an invalid instruction */
if (! size ) { if (! size ) {
x86_report_error(report_invalid_insn, (void*)(long)buf_rva+offset ); x86_report_error(report_invalid_insn, (void*)(long)(buf_rva+offset));
return 0; return 0;
} }
/* check if we overran the end of the buffer */ /* check if we overran the end of the buffer */
if ( size > len ) { if ( size > len ) {
x86_report_error( report_insn_bounds, (void*)(long)buf_rva + offset ); x86_report_error( report_insn_bounds, (void*)(long)(buf_rva + offset));
MAKE_INVALID( insn, bytes ); MAKE_INVALID( insn, bytes );
return 0; return 0;
} }