From fe1ca52f6daa9b7ae22981666f5de4406d4ae3ec Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Tue, 16 May 2023 02:09:24 -0700 Subject: [PATCH] Simplify prop_cb --- native/src/resetprop/persist.cpp | 14 +++++++------- native/src/resetprop/prop.hpp | 10 +--------- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/native/src/resetprop/persist.cpp b/native/src/resetprop/persist.cpp index 91c770705..772941bb1 100644 --- a/native/src/resetprop/persist.cpp +++ b/native/src/resetprop/persist.cpp @@ -75,7 +75,7 @@ PB_BIND(PersistentProperties_PersistentPropertyRecord, PersistentProperties_Pers * End of auto generated code * ***************************/ -static bool name_decode(pb_istream_t *stream, const pb_field_t *field, void **arg) { +static bool name_decode(pb_istream_t *stream, const pb_field_t *, void **arg) { string &name = *static_cast(*arg); name.resize(stream->bytes_left); return pb_read(stream, (pb_byte_t *)(name.data()), stream->bytes_left); @@ -86,7 +86,7 @@ static bool name_encode(pb_ostream_t *stream, const pb_field_t *field, void * co pb_encode_string(stream, (const pb_byte_t *) *arg, strlen((const char *) *arg)); } -static bool prop_decode(pb_istream_t *stream, const pb_field_t *field, void **arg) { +static bool prop_decode(pb_istream_t *stream, const pb_field_t *, void **arg) { PersistentProperties_PersistentPropertyRecord prop{}; string name; prop.name.funcs.decode = name_decode; @@ -94,7 +94,7 @@ static bool prop_decode(pb_istream_t *stream, const pb_field_t *field, void **ar if (!pb_decode(stream, &PersistentProperties_PersistentPropertyRecord_msg, &prop)) return false; auto cb = static_cast(*arg); - cb->exec(std::move(name), prop.value); + cb->exec(name.data(), prop.value); return true; } @@ -107,7 +107,7 @@ static bool prop_encode(pb_ostream_t *stream, const pb_field_t *field, void * co if (!pb_encode_tag_for_field(stream, field)) return false; prop.name.arg = (void *) p.first.data(); - strcpy(prop.value, p.second.data()); + strscpy(prop.value, p.second.data(), sizeof(prop.value)); if (!pb_encode_submessage(stream, &PersistentProperties_PersistentPropertyRecord_msg, &prop)) return false; } @@ -173,9 +173,9 @@ void persist_getprops(prop_cb *prop_cb) { struct match_prop_name : prop_cb { explicit match_prop_name(const char *name) : _name(name) { value[0] = '\0'; } - void exec(string &&name, const char *val) override { - if (name == _name) - strcpy(value, val); + void exec(const char *name, const char *val) override { + if (std::strcmp(name, _name) == 0) + strscpy(value, val, sizeof(value)); } char value[PROP_VALUE_MAX]; private: diff --git a/native/src/resetprop/prop.hpp b/native/src/resetprop/prop.hpp index cfb367ce1..e1fb7ee5f 100644 --- a/native/src/resetprop/prop.hpp +++ b/native/src/resetprop/prop.hpp @@ -8,12 +8,7 @@ #define PERSISTENT_PROPERTY_DIR "/data/property" struct prop_cb { - virtual void exec(const char *name, const char *value) { - exec(std::string(name), value); - } - virtual void exec(std::string &&name, const char *value) { - exec(name.data(), value); - } + virtual void exec(const char *name, const char *value) = 0; }; using prop_list = std::map; @@ -23,9 +18,6 @@ struct prop_collector : prop_cb { void exec(const char *name, const char *value) override { list.insert_or_assign(name, value); } - void exec(std::string &&name, const char *value) override { - list.insert_or_assign(std::move(name), value); - } private: prop_list &list; };