Delete default assignment operator Offset<>
This commit is contained in:
parent
02d864aa26
commit
699de689e9
|
@ -173,6 +173,9 @@ typedef Index NameID;
|
||||||
template <typename Type, bool has_null=true>
|
template <typename Type, bool has_null=true>
|
||||||
struct Offset : Type
|
struct Offset : Type
|
||||||
{
|
{
|
||||||
|
HB_DELETE_COPY_ASSIGN (Offset);
|
||||||
|
Offset () = default;
|
||||||
|
|
||||||
Offset& operator = (typename Type::type i) { Type::operator= (i); return *this; }
|
Offset& operator = (typename Type::type i) { Type::operator= (i); return *this; }
|
||||||
|
|
||||||
typedef Type type;
|
typedef Type type;
|
||||||
|
|
|
@ -904,7 +904,7 @@ struct cmap
|
||||||
// Write out format 4 sub table
|
// Write out format 4 sub table
|
||||||
{
|
{
|
||||||
CmapSubtable &subtable = format4_plat0_rec.subtable.serialize (&c, table);
|
CmapSubtable &subtable = format4_plat0_rec.subtable.serialize (&c, table);
|
||||||
format4_plat3_rec.subtable = format4_plat0_rec.subtable;
|
format4_plat3_rec.subtable = (unsigned int) format4_plat0_rec.subtable;
|
||||||
subtable.u.format = 4;
|
subtable.u.format = 4;
|
||||||
|
|
||||||
CmapSubtableFormat4 &format4 = subtable.u.format4;
|
CmapSubtableFormat4 &format4 = subtable.u.format4;
|
||||||
|
|
|
@ -583,25 +583,25 @@ struct Feature
|
||||||
* Adobe tools, only the 'size' feature had FeatureParams defined.
|
* Adobe tools, only the 'size' feature had FeatureParams defined.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OffsetTo<FeatureParams> orig_offset = featureParams;
|
if (likely (featureParams.is_null ()))
|
||||||
|
return_trace (true);
|
||||||
|
|
||||||
|
unsigned int orig_offset = featureParams;
|
||||||
if (unlikely (!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)))
|
if (unlikely (!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE)))
|
||||||
return_trace (false);
|
return_trace (false);
|
||||||
|
|
||||||
if (likely (orig_offset.is_null ()))
|
|
||||||
return_trace (true);
|
|
||||||
|
|
||||||
if (featureParams == 0 && closure &&
|
if (featureParams == 0 && closure &&
|
||||||
closure->tag == HB_TAG ('s','i','z','e') &&
|
closure->tag == HB_TAG ('s','i','z','e') &&
|
||||||
closure->list_base && closure->list_base < this)
|
closure->list_base && closure->list_base < this)
|
||||||
{
|
{
|
||||||
unsigned int new_offset_int = (unsigned int) orig_offset -
|
unsigned int new_offset_int = orig_offset -
|
||||||
(((char *) this) - ((char *) closure->list_base));
|
(((char *) this) - ((char *) closure->list_base));
|
||||||
|
|
||||||
OffsetTo<FeatureParams> new_offset;
|
OffsetTo<FeatureParams> new_offset;
|
||||||
/* Check that it did not overflow. */
|
/* Check that it would not overflow. */
|
||||||
new_offset = new_offset_int;
|
new_offset = new_offset_int;
|
||||||
if (new_offset == new_offset_int &&
|
if (new_offset == new_offset_int &&
|
||||||
c->try_set (&featureParams, new_offset) &&
|
c->try_set (&featureParams, new_offset_int) &&
|
||||||
!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE))
|
!featureParams.sanitize (c, this, closure ? closure->tag : HB_TAG_NONE))
|
||||||
return_trace (false);
|
return_trace (false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue