Appease some UBSan complaints (#720)

This commit is contained in:
YAMAMOTO Takashi 2021-09-04 11:09:30 +09:00 committed by GitHub
parent 4e4d48e72b
commit 79f163d08b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 19 deletions

View File

@ -8580,12 +8580,12 @@ unsupported_opcode:
goto re_scan;
func->const_cell_num = loader_ctx->const_cell_num;
if (func->const_cell_num > 0
&& !(func->consts = func_const =
if (func->const_cell_num > 0) {
if (!(func->consts = func_const =
loader_malloc(func->const_cell_num * 4,
error_buf, error_buf_size))) {
error_buf, error_buf_size)))
goto fail;
}
func_const_end = func->consts + func->const_cell_num * 4;
/* reverse the const buf */
for (int i = loader_ctx->num_const - 1; i >= 0; i--) {
@ -8602,6 +8602,7 @@ unsupported_opcode:
func_const += sizeof(int32);
}
}
}
func->max_stack_cell_num = loader_ctx->preserved_local_offset -
loader_ctx->start_dynamic_offset + 1;

View File

@ -80,8 +80,13 @@ int BH_VPRINTF(const char *format, va_list ap);
/* Return the offset of the given field in the given type */
#ifndef offsetof
/* GCC 4.0 and later has the builtin. */
#if defined(__GNUC__) && __GNUC__ >= 4
#define offsetof(Type, field) __builtin_offsetof(Type, field)
#else
#define offsetof(Type, field) ((size_t)(&((Type *)0)->field))
#endif
#endif
typedef uint8_t uint8;
typedef int8_t int8;