diff options
| author | Julian Veit <Claymore1298@gmail.com> | 2024-07-08 07:46:54 +0200 |
|---|---|---|
| committer | Julian Veit <Claymore1298@gmail.com> | 2024-07-08 07:46:54 +0200 |
| commit | 0aac54a0e9fd9d80d43d7154370810ac86e92f1b (patch) | |
| tree | d63c54a4973f5958ab5d6def478563d27a72b6eb /updater/dynamic_partitions.cpp | |
| parent | af9a42f1d13ffeca2eabf368580ad6790e2763ba (diff) | |
| parent | 8bbe7bae399b428cfaa021a511d749c78e5a8e73 (diff) | |
Merge https://github.com/LineageOS/android_bootable_recovery into HEADu14.0
Change-Id: I05e44ba7ba265c80b0f6bf48f2c084e2598c69e4
Diffstat (limited to 'updater/dynamic_partitions.cpp')
| -rw-r--r-- | updater/dynamic_partitions.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/updater/dynamic_partitions.cpp b/updater/dynamic_partitions.cpp index a340116f..b94bd0e5 100644 --- a/updater/dynamic_partitions.cpp +++ b/updater/dynamic_partitions.cpp @@ -88,8 +88,10 @@ static constexpr char kMetadataUpdatedMarker[] = "/dynamic_partition_metadata.UP Value* UpdateDynamicPartitionsFn(const char* name, State* state, const std::vector<std::unique_ptr<Expr>>& argv) { - if (argv.size() != 1) { - ErrorAbort(state, kArgsParsingFailure, "%s expects 1 arguments, got %zu", name, argv.size()); + const std::string_view empty_string_view{}; + if (argv.size() != 1 && argv.size() != 2) { + ErrorAbort(state, kArgsParsingFailure, "%s expects 1 or 2 arguments, got %zu", name, + argv.size()); return StringValue(""); } std::vector<std::unique_ptr<Value>> args; @@ -102,6 +104,14 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, return StringValue(""); } + const std::unique_ptr<Value>& super_empty_value = args[1]; + if (argv.size() > 1) { + if (super_empty_value->type != Value::Type::BLOB) { + ErrorAbort(state, kArgsParsingFailure, "super_empty argument to %s must be blob", name); + return StringValue(""); + } + } + std::string updated_marker = Paths::Get().stash_directory_base() + kMetadataUpdatedMarker; if (state->is_retry) { struct stat sb; @@ -121,7 +131,8 @@ Value* UpdateDynamicPartitionsFn(const char* name, State* state, } auto updater_runtime = state->updater->GetRuntime(); - if (!updater_runtime->UpdateDynamicPartitions(op_list_value->data)) { + if (!updater_runtime->UpdateDynamicPartitions( + op_list_value->data, argv.size() > 1 ? super_empty_value->data : empty_string_view)) { return StringValue(""); } |
