Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: src/name.cc

Issue 512923003: Fix MSVC warnings about possible value truncation. (Closed) Base URL: https://chromium.googlesource.com/external/ots.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ltsh.cc ('k') | src/ots.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/name.cc
diff --git a/src/name.cc b/src/name.cc
index a22211b8344086f69235cdb1b4d2a500d0380869..77c26cf088f2f6c1eebecdaa58e2a28d4614fd16 100644
--- a/src/name.cc
+++ b/src/name.cc
@@ -198,7 +198,7 @@ bool ots_name_parse(OpenTypeFile* file, const uint8_t* data, size_t length) {
// 4 - full name
// 5 - version
// 6 - postscript name
- static const unsigned kStdNameCount = 7;
+ static const uint16_t kStdNameCount = 7;
static const char* kStdNames[kStdNameCount] = {
NULL,
"OTS derived font",
@@ -235,7 +235,7 @@ bool ots_name_parse(OpenTypeFile* file, const uint8_t* data, size_t length) {
}
}
- for (unsigned i = 0; i < kStdNameCount; ++i) {
+ for (uint16_t i = 0; i < kStdNameCount; ++i) {
if (kStdNames[i] == NULL) {
continue;
}
@@ -269,8 +269,8 @@ bool ots_name_should_serialise(OpenTypeFile* file) {
bool ots_name_serialise(OTSStream* out, OpenTypeFile* file) {
const OpenTypeNAME* name = file->name;
- uint16_t name_count = name->names.size();
- uint16_t lang_tag_count = name->lang_tags.size();
+ uint16_t name_count = static_cast<uint16_t>(name->names.size());
+ uint16_t lang_tag_count = static_cast<uint16_t>(name->lang_tags.size());
uint16_t format = 0;
size_t string_offset = 6 + name_count * 12;
@@ -284,7 +284,7 @@ bool ots_name_serialise(OTSStream* out, OpenTypeFile* file) {
}
if (!out->WriteU16(format) ||
!out->WriteU16(name_count) ||
- !out->WriteU16(string_offset)) {
+ !out->WriteU16(static_cast<uint16_t>(string_offset))) {
return OTS_FAILURE();
}
@@ -292,12 +292,14 @@ bool ots_name_serialise(OTSStream* out, OpenTypeFile* file) {
for (std::vector<NameRecord>::const_iterator name_iter = name->names.begin();
name_iter != name->names.end(); name_iter++) {
const NameRecord& rec = *name_iter;
- if (!out->WriteU16(rec.platform_id) ||
+ if (string_data.size() + rec.text.size() >
+ std::numeric_limits<uint16_t>::max() ||
+ !out->WriteU16(rec.platform_id) ||
!out->WriteU16(rec.encoding_id) ||
!out->WriteU16(rec.language_id) ||
!out->WriteU16(rec.name_id) ||
- !out->WriteU16(rec.text.size()) ||
- !out->WriteU16(string_data.size()) ) {
+ !out->WriteU16(static_cast<uint16_t>(rec.text.size())) ||
+ !out->WriteU16(static_cast<uint16_t>(string_data.size())) ) {
return OTS_FAILURE();
}
string_data.append(rec.text);
@@ -310,8 +312,10 @@ bool ots_name_serialise(OTSStream* out, OpenTypeFile* file) {
for (std::vector<std::string>::const_iterator tag_iter =
name->lang_tags.begin();
tag_iter != name->lang_tags.end(); tag_iter++) {
- if (!out->WriteU16(tag_iter->size()) ||
- !out->WriteU16(string_data.size())) {
+ if (string_data.size() + tag_iter->size() >
+ std::numeric_limits<uint16_t>::max() ||
+ !out->WriteU16(static_cast<uint16_t>(tag_iter->size())) ||
+ !out->WriteU16(static_cast<uint16_t>(string_data.size()))) {
return OTS_FAILURE();
}
string_data.append(*tag_iter);
« no previous file with comments | « src/ltsh.cc ('k') | src/ots.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698