Fix buffer_diff for empty buffers
If buffers are empty, content type should be ignored. This fixes last of the failing tests: fuzzed.tests. Green again!
This commit is contained in:
parent
7cc348041d
commit
d03f11f246
|
@ -1893,7 +1893,7 @@ hb_buffer_diff (hb_buffer_t *buffer,
|
|||
hb_codepoint_t dottedcircle_glyph,
|
||||
unsigned int position_fuzz)
|
||||
{
|
||||
if (buffer->content_type != reference->content_type)
|
||||
if (buffer->content_type != reference->content_type && buffer->len && reference->len)
|
||||
return HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH;
|
||||
|
||||
hb_buffer_diff_flags_t result = HB_BUFFER_DIFF_FLAG_EQUAL;
|
||||
|
|
|
@ -481,12 +481,12 @@ typedef enum { /*< flags >*/
|
|||
|
||||
/* Buffers with different content_type cannot be meaningfully compared
|
||||
* in any further detail. */
|
||||
HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0X0001,
|
||||
HB_BUFFER_DIFF_FLAG_CONTENT_TYPE_MISMATCH = 0x0001,
|
||||
|
||||
/* For buffers with differing length, the per-glyph comparison is not
|
||||
* attempted, though we do still scan reference for dottedcircle / .notdef
|
||||
* glyphs. */
|
||||
HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0X0002,
|
||||
HB_BUFFER_DIFF_FLAG_LENGTH_MISMATCH = 0x0002,
|
||||
|
||||
/* We want to know if dottedcircle / .notdef glyphs are present in the
|
||||
* reference, as we may not care so much about other differences in this
|
||||
|
|
|
@ -414,7 +414,7 @@ struct shape_options_t : option_group_t
|
|||
}
|
||||
|
||||
bool ret = true;
|
||||
hb_buffer_diff_flags_t diff = hb_buffer_diff (buffer, reconstruction, (hb_codepoint_t) -1, 0);
|
||||
hb_buffer_diff_flags_t diff = hb_buffer_diff (reconstruction, buffer, (hb_codepoint_t) -1, 0);
|
||||
if (diff)
|
||||
{
|
||||
if (error)
|
||||
|
|
Loading…
Reference in New Issue