summaryrefslogtreecommitdiff
path: root/libs/input/PropertyMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/input/PropertyMap.cpp')
-rw-r--r--libs/input/PropertyMap.cpp29
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 ---