--- core/fxcrt/string_data_template.cpp +++ core/fxcrt/string_data_template.cpp @@ -83,7 +83,8 @@ void StringDataTemplate::CopyContentsAt(size_t offset, DCHECK(nLen >= 0); DCHECK(offset + nLen <= m_nAllocLength); - memcpy(m_String + offset, pStr, nLen * sizeof(CharType)); + if (nLen != 0) + memcpy(m_String + offset, pStr, nLen * sizeof(CharType)); m_String[offset + nLen] = 0; } --- core/fxge/cfx_glyphcache.cpp +++ core/fxge/cfx_glyphcache.cpp @@ -183,7 +183,8 @@ std::unique_ptr CFX_GlyphCache::RenderGlyph( } } } else { - memset(pDestBuf, 0, dest_pitch * bmheight); + if (dest_pitch != 0 && bmheight != 0) + memset(pDestBuf, 0, dest_pitch * bmheight); int rowbytes = std::min(abs(src_pitch), dest_pitch); for (int row = 0; row < bmheight; row++) memcpy(pDestBuf + row * dest_pitch, pSrcBuf + row * src_pitch, rowbytes);