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

Side by Side Diff: src/cff.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, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | src/cff_type2_charstring.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cff.h" 5 #include "cff.h"
6 6
7 #include <cstring> 7 #include <cstring>
8 #include <utility> // std::pair 8 #include <utility> // std::pair
9 #include <vector> 9 #include <vector>
10 10
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 if (type == DICT_DATA_TOPLEVEL) { 465 if (type == DICT_DATA_TOPLEVEL) {
466 out_cff->char_strings_array.push_back(new ots::CFFIndex); 466 out_cff->char_strings_array.push_back(new ots::CFFIndex);
467 } 467 }
468 size_t dict_length = index.offsets[i] - index.offsets[i - 1]; 468 size_t dict_length = index.offsets[i] - index.offsets[i - 1];
469 ots::Buffer table(data + index.offsets[i - 1], dict_length); 469 ots::Buffer table(data + index.offsets[i - 1], dict_length);
470 470
471 std::vector<std::pair<uint32_t, DICT_OPERAND_TYPE> > operands; 471 std::vector<std::pair<uint32_t, DICT_OPERAND_TYPE> > operands;
472 472
473 FONT_FORMAT font_format = FORMAT_UNKNOWN; 473 FONT_FORMAT font_format = FORMAT_UNKNOWN;
474 bool have_ros = false; 474 bool have_ros = false;
475 size_t glyphs = 0; 475 uint16_t glyphs = 0;
476 size_t charset_offset = 0; 476 size_t charset_offset = 0;
477 477
478 while (table.offset() < dict_length) { 478 while (table.offset() < dict_length) {
479 if (!ParseDictDataReadNext(&table, &operands)) { 479 if (!ParseDictDataReadNext(&table, &operands)) {
480 return OTS_FAILURE(); 480 return OTS_FAILURE();
481 } 481 }
482 if (operands.empty()) { 482 if (operands.empty()) {
483 return OTS_FAILURE(); 483 return OTS_FAILURE();
484 } 484 }
485 if (operands.size() > 48) { 485 if (operands.size() > 48) {
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 } 685 }
686 686
687 // parse FDSelect data structure 687 // parse FDSelect data structure
688 ots::Buffer table(data, table_length); 688 ots::Buffer table(data, table_length);
689 table.set_offset(operands.back().first); 689 table.set_offset(operands.back().first);
690 uint8_t format = 0; 690 uint8_t format = 0;
691 if (!table.ReadU8(&format)) { 691 if (!table.ReadU8(&format)) {
692 return OTS_FAILURE(); 692 return OTS_FAILURE();
693 } 693 }
694 if (format == 0) { 694 if (format == 0) {
695 for (size_t j = 0; j < glyphs; ++j) { 695 for (uint16_t j = 0; j < glyphs; ++j) {
696 uint8_t fd_index = 0; 696 uint8_t fd_index = 0;
697 if (!table.ReadU8(&fd_index)) { 697 if (!table.ReadU8(&fd_index)) {
698 return OTS_FAILURE(); 698 return OTS_FAILURE();
699 } 699 }
700 (out_cff->fd_select)[j] = fd_index; 700 (out_cff->fd_select)[j] = fd_index;
701 } 701 }
702 } else if (format == 3) { 702 } else if (format == 3) {
703 uint16_t n_ranges = 0; 703 uint16_t n_ranges = 0;
704 if (!table.ReadU16(&n_ranges)) { 704 if (!table.ReadU16(&n_ranges)) {
705 return OTS_FAILURE(); 705 return OTS_FAILURE();
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 // parse "13. Charsets" 829 // parse "13. Charsets"
830 if (charset_offset) { 830 if (charset_offset) {
831 ots::Buffer table(data, table_length); 831 ots::Buffer table(data, table_length);
832 table.set_offset(charset_offset); 832 table.set_offset(charset_offset);
833 uint8_t format = 0; 833 uint8_t format = 0;
834 if (!table.ReadU8(&format)) { 834 if (!table.ReadU8(&format)) {
835 return OTS_FAILURE(); 835 return OTS_FAILURE();
836 } 836 }
837 switch (format) { 837 switch (format) {
838 case 0: 838 case 0:
839 for (unsigned j = 1 /* .notdef is omitted */; j < glyphs; ++j) { 839 for (uint16_t j = 1 /* .notdef is omitted */; j < glyphs; ++j) {
840 uint16_t sid = 0; 840 uint16_t sid = 0;
841 if (!table.ReadU16(&sid)) { 841 if (!table.ReadU16(&sid)) {
842 return OTS_FAILURE(); 842 return OTS_FAILURE();
843 } 843 }
844 if (!have_ros && (sid > sid_max)) { 844 if (!have_ros && (sid > sid_max)) {
845 return OTS_FAILURE(); 845 return OTS_FAILURE();
846 } 846 }
847 // TODO(yusukes): check CIDs when have_ros is true. 847 // TODO(yusukes): check CIDs when have_ros is true.
848 } 848 }
849 break; 849 break;
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1019 } 1019 }
1020 for (size_t i = 0; i < file->cff->local_subrs_per_font.size(); ++i) { 1020 for (size_t i = 0; i < file->cff->local_subrs_per_font.size(); ++i) {
1021 delete (file->cff->local_subrs_per_font)[i]; 1021 delete (file->cff->local_subrs_per_font)[i];
1022 } 1022 }
1023 delete file->cff->local_subrs; 1023 delete file->cff->local_subrs;
1024 delete file->cff; 1024 delete file->cff;
1025 } 1025 }
1026 } 1026 }
1027 1027
1028 } // namespace ots 1028 } // namespace ots
OLDNEW
« no previous file with comments | « no previous file | src/cff_type2_charstring.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698