| Index: src/ports/SkFontMgr_android_parser.cpp
 | 
| diff --git a/src/ports/SkFontMgr_android_parser.cpp b/src/ports/SkFontMgr_android_parser.cpp
 | 
| index 1d1a3b7ddb67236b8f3c9d2e76e29bc625c8f5aa..3f9c90cf318c045fd4be681042f390201c4a5d4b 100644
 | 
| --- a/src/ports/SkFontMgr_android_parser.cpp
 | 
| +++ b/src/ports/SkFontMgr_android_parser.cpp
 | 
| @@ -7,6 +7,7 @@
 | 
|  
 | 
|  // Despite the name and location, this is portable code.
 | 
|  
 | 
| +#include "SkFontMgr.h"
 | 
|  #include "SkFontMgr_android_parser.h"
 | 
|  #include "SkStream.h"
 | 
|  #include "SkTDArray.h"
 | 
| @@ -152,7 +153,10 @@ namespace lmpParser {
 | 
|  static const TagHandler axisHandler = {
 | 
|      /*start*/[](FamilyData* self, const char* tag, const char** attributes) {
 | 
|          FontFileInfo& file = *self->fCurrentFontInfo;
 | 
| -        FontFileInfo::Axis& axis = file.fAxes.push_back();
 | 
| +        SkFourByteTag axisTag = SkSetFourByteTag('\0','\0','\0','\0');
 | 
| +        SkFixed axisStyleValue = 0;
 | 
| +        bool axisTagIsValid = false;
 | 
| +        bool axisStyleValueIsValid = false;
 | 
|          for (size_t i = 0; ATTS_NON_NULL(attributes, i); i += 2) {
 | 
|              const char* name = attributes[i];
 | 
|              const char* value = attributes[i+1];
 | 
| @@ -160,26 +164,34 @@ static const TagHandler axisHandler = {
 | 
|              if (MEMEQ("tag", name, nameLen)) {
 | 
|                  size_t valueLen = strlen(value);
 | 
|                  if (valueLen == 4) {
 | 
| -                    SkFourByteTag tag = SkSetFourByteTag(value[0], value[1], value[2], value[3]);
 | 
| +                    axisTag = SkSetFourByteTag(value[0], value[1], value[2], value[3]);
 | 
| +                    axisTagIsValid = true;
 | 
|                      for (int j = 0; j < file.fAxes.count() - 1; ++j) {
 | 
| -                        if (file.fAxes[j].fTag == tag) {
 | 
| +                        if (file.fAxes[j].fTag == axisTag) {
 | 
| +                            axisTagIsValid = false;
 | 
|                              SK_FONTCONFIGPARSER_WARNING("'%c%c%c%c' axis specified more than once",
 | 
| -                                                        (tag >> 24) & 0xFF,
 | 
| -                                                        (tag >> 16) & 0xFF,
 | 
| -                                                        (tag >>  8) & 0xFF,
 | 
| -                                                        (tag      ) & 0xFF);
 | 
| +                                                        (axisTag >> 24) & 0xFF,
 | 
| +                                                        (axisTag >> 16) & 0xFF,
 | 
| +                                                        (axisTag >>  8) & 0xFF,
 | 
| +                                                        (axisTag      ) & 0xFF);
 | 
|                          }
 | 
|                      }
 | 
| -                    axis.fTag = SkSetFourByteTag(value[0], value[1], value[2], value[3]);
 | 
|                  } else {
 | 
|                      SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid axis tag", value);
 | 
|                  }
 | 
|              } else if (MEMEQ("stylevalue", name, nameLen)) {
 | 
| -                if (!parse_fixed<16>(value, &axis.fValue)) {
 | 
| +                if (parse_fixed<16>(value, &axisStyleValue)) {
 | 
| +                    axisStyleValueIsValid = true;
 | 
| +                } else {
 | 
|                      SK_FONTCONFIGPARSER_WARNING("'%s' is an invalid axis stylevalue", value);
 | 
|                  }
 | 
|              }
 | 
|          }
 | 
| +        if (axisTagIsValid && axisStyleValueIsValid) {
 | 
| +            SkFontMgr::FontParameters::Axis& axis = file.fAxes.push_back();
 | 
| +            axis.fTag = axisTag;
 | 
| +            axis.fStyleValue = SkFixedToScalar(axisStyleValue);
 | 
| +        }
 | 
|      },
 | 
|      /*end*/nullptr,
 | 
|      /*tag*/nullptr,
 | 
| 
 |