Index: src/vorg.cc |
diff --git a/src/vorg.cc b/src/vorg.cc |
index 61658fda61232434634c7a48d37187e808004026..b218c8895e4070bc5ce21e9c24df0fc1a3513eb8 100644 |
--- a/src/vorg.cc |
+++ b/src/vorg.cc |
@@ -71,15 +71,17 @@ bool ots_vorg_should_serialise(OpenTypeFile *file) { |
bool ots_vorg_serialise(OTSStream *out, OpenTypeFile *file) { |
OpenTypeVORG * const vorg = file->vorg; |
- |
- if (!out->WriteU16(vorg->major_version) || |
+ |
+ const uint16_t num_metrics = static_cast<uint16_t>(vorg->metrics.size()); |
+ if (num_metrics != vorg->metrics.size() || |
+ !out->WriteU16(vorg->major_version) || |
!out->WriteU16(vorg->minor_version) || |
!out->WriteS16(vorg->default_vert_origin_y) || |
- !out->WriteU16(vorg->metrics.size())) { |
+ !out->WriteU16(num_metrics)) { |
return OTS_FAILURE(); |
} |
- for (unsigned i = 0; i < vorg->metrics.size(); ++i) { |
+ for (uint16_t i = 0; i < num_metrics; ++i) { |
const OpenTypeVORGMetrics& rec = vorg->metrics[i]; |
if (!out->WriteU16(rec.glyph_index) || |
!out->WriteS16(rec.vert_origin_y)) { |