diff --git a/include/tvm/ffi/object.h b/include/tvm/ffi/object.h index 1f0fe4c1..28fd401d 100644 --- a/include/tvm/ffi/object.h +++ b/include/tvm/ffi/object.h @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -1094,8 +1095,8 @@ struct ObjectUnsafe { template TVM_FFI_INLINE static int64_t GetObjectOffsetToSubclass() { - return (reinterpret_cast(&(static_cast(nullptr)->header_)) - - reinterpret_cast(&(static_cast(nullptr)->header_))); + return static_cast(offsetof(Class, header_)) - + static_cast(offsetof(Object, header_)); } template diff --git a/include/tvm/ffi/string.h b/include/tvm/ffi/string.h index 9c1057a9..b2188452 100644 --- a/include/tvm/ffi/string.h +++ b/include/tvm/ffi/string.h @@ -754,7 +754,9 @@ class String { } void InitData(const char* data, size_t size) { char* dest_data = InitSpaceForSize(size); - std::memcpy(dest_data, data, size); + if (size > 0) { + std::memcpy(dest_data, data, size); + } dest_data[size] = '\0'; } /*!