@@ -910,8 +910,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
910910 for (auto & option : options.string_options ) {
911911 try {
912912 if (payload.contains (option.name )) {
913+ if (option.target ->compare (payload[option.name ].get <std::string>()) != 0 ) {
914+ has_anything_changed = true ;
915+ }
913916 option.target ->assign (payload[option.name ].get <std::string>());
914- has_anything_changed = true ;
915917 }
916918 } catch (...) {
917919 sd_log (sd_log_level_t ::SD_LOG_WARN, " Failed to parse string option: %s\n " , option.name .c_str ());
@@ -920,8 +922,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
920922 for (auto & option : options.int_options ) {
921923 try {
922924 if (payload.contains (option.name )) {
923- *option.target = payload[option.name ].get <int >();
924- has_anything_changed = true ;
925+ if (*option.target != payload[option.name ].get <int >()) {
926+ has_anything_changed = true ;
927+ }
928+ *option.target = payload[option.name ].get <int >();
925929 }
926930 } catch (...) {
927931 sd_log (sd_log_level_t ::SD_LOG_WARN, " Failed to parse int option: %s\n " , option.name .c_str ());
@@ -930,8 +934,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
930934 for (auto & option : options.long_options ) {
931935 try {
932936 if (payload.contains (option.name )) {
933- *option.target = payload[option.name ].get <int64_t >();
934- has_anything_changed = true ;
937+ if (*option.target != payload[option.name ].get <int64_t >()) {
938+ has_anything_changed = true ;
939+ }
940+ *option.target = payload[option.name ].get <int64_t >();
935941 }
936942 } catch (...) {
937943 sd_log (sd_log_level_t ::SD_LOG_WARN, " Failed to parse long option: %s\n " , option.name .c_str ());
@@ -940,8 +946,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
940946 for (auto & option : options.float_options ) {
941947 try {
942948 if (payload.contains (option.name )) {
943- *option.target = payload[option.name ].get <float >();
944- has_anything_changed = true ;
949+ if (*option.target != payload[option.name ].get <float >()) {
950+ has_anything_changed = true ;
951+ }
952+ *option.target = payload[option.name ].get <float >();
945953 }
946954 } catch (...) {
947955 sd_log (sd_log_level_t ::SD_LOG_WARN, " Failed to parse float option: %s\n " , option.name .c_str ());
@@ -951,8 +959,10 @@ bool parse_json_options(nlohmann::json payload, JsonOptions& options) {
951959 for (auto & option : options.bool_options ) {
952960 try {
953961 if (payload.contains (option.name )) {
954- *option.target = payload[option.name ].get <bool >();
955- has_anything_changed = true ;
962+ if (*option.target != payload[option.name ].get <bool >()) {
963+ has_anything_changed = true ;
964+ }
965+ *option.target = payload[option.name ].get <bool >();
956966 }
957967 } catch (...) {
958968 sd_log (sd_log_level_t ::SD_LOG_WARN, " Failed to parse bool option: %s\n " , option.name .c_str ());
0 commit comments