diff options
| author | 2021-10-06 22:53:36 +0000 | |
|---|---|---|
| committer | 2021-10-06 22:53:36 +0000 | |
| commit | 097d2a50873100486d65a69cb1cbabf37fb3b188 (patch) | |
| tree | c2f19f92e4503b2de0afeebdd9bf7aeb1bb2e9c1 /libs/input/PropertyMap.cpp | |
| parent | cbfb18e134845deeace954bbba818acda48cb80f (diff) | |
| parent | adcb6a2733c1baf66e5ad72365965ab504f5f959 (diff) | |
Merge Android 12
Bug: 202323961
Merged-In: Ifb27b3eb12454fa96f07e6797745c697b4f831c4
Change-Id: I2a7f5931477fddb51564c2eabcdc96ce58888ce8
Diffstat (limited to 'libs/input/PropertyMap.cpp')
| -rw-r--r-- | libs/input/PropertyMap.cpp | 29 | 
1 files changed, 12 insertions, 17 deletions
diff --git a/libs/input/PropertyMap.cpp b/libs/input/PropertyMap.cpp index 4833eb9c05..a842166761 100644 --- a/libs/input/PropertyMap.cpp +++ b/libs/input/PropertyMap.cpp @@ -107,23 +107,22 @@ void PropertyMap::addAll(const PropertyMap* map) {      }  } -status_t PropertyMap::load(const String8& filename, PropertyMap** outMap) { -    *outMap = nullptr; +android::base::Result<std::unique_ptr<PropertyMap>> PropertyMap::load(const char* filename) { +    std::unique_ptr<PropertyMap> outMap = std::make_unique<PropertyMap>(); +    if (outMap == nullptr) { +        return android::base::Error(NO_MEMORY) << "Error allocating property map."; +    } -    Tokenizer* tokenizer; -    status_t status = Tokenizer::open(filename, &tokenizer); +    Tokenizer* rawTokenizer; +    status_t status = Tokenizer::open(String8(filename), &rawTokenizer); +    std::unique_ptr<Tokenizer> tokenizer(rawTokenizer);      if (status) { -        ALOGE("Error %d opening property file %s.", status, filename.string()); +        ALOGE("Error %d opening property file %s.", status, filename);      } else { -        PropertyMap* map = new PropertyMap(); -        if (!map) { -            ALOGE("Error allocating property map."); -            status = NO_MEMORY; -        } else {  #if DEBUG_PARSER_PERFORMANCE              nsecs_t startTime = systemTime(SYSTEM_TIME_MONOTONIC);  #endif -            Parser parser(map, tokenizer); +            Parser parser(outMap.get(), tokenizer.get());              status = parser.parse();  #if DEBUG_PARSER_PERFORMANCE              nsecs_t elapsedTime = systemTime(SYSTEM_TIME_MONOTONIC) - startTime; @@ -132,14 +131,10 @@ status_t PropertyMap::load(const String8& filename, PropertyMap** outMap) {                    elapsedTime / 1000000.0);  #endif              if (status) { -                delete map; -            } else { -                *outMap = map; +                return android::base::Error(BAD_VALUE) << "Could not parse " << filename;              } -        } -        delete tokenizer;      } -    return status; +    return std::move(outMap);  }  // --- PropertyMap::Parser ---  |