Using insert is prone to errors if the content of the map is also set in other parts of the code, since in the event of a key collision the map is not updated by insert().
Signed-off-by: Zane Bitter zbitter@redhat.com --- src/lib/mh_agent.cpp | 7 +++---- src/service/service-qmf-console.cpp | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/src/lib/mh_agent.cpp b/src/lib/mh_agent.cpp index 1cad1ed..63352df 100644 --- a/src/lib/mh_agent.cpp +++ b/src/lib/mh_agent.cpp @@ -154,15 +154,14 @@ connection_option(int code, const char *name, const char *arg, void *userdata) qpid::types::Variant::Map *options = static_castqpid::types::Variant::Map*(userdata);
if(strcmp(name, "service") == 0) { - options->insert(std::pair<std::string, qpid::types::Variant>("sasl-service", arg)); - options->insert(std::pair<std::string, qpid::types::Variant>("sasl-mechanism", "GSSAPI")); - + (*options)["sasl-service"] = arg; + (*options)["sasl-mechanism"] = "GSSAPI"; } else if(strcmp(name, "reconnect") == 0) { bool reconnect = !arg || (strcasecmp(arg, "no") != 0 && strcasecmp(arg, "false") != 0); (*options)["reconnect"] = reconnect; } else { - options->insert(std::pair<std::string, qpid::types::Variant>(name, arg)); + (*options)[name] = arg; } return 0; } diff --git a/src/service/service-qmf-console.cpp b/src/service/service-qmf-console.cpp index 9398746..31ad417 100644 --- a/src/service/service-qmf-console.cpp +++ b/src/service/service-qmf-console.cpp @@ -54,10 +54,9 @@ resource_arg(int code, const char *name, const char *arg, void *userdata) cout << name << "=" << arg << endl; if(strcmp(name, "timeout") == 0 || strcmp(name, "interval") == 0) { uint32_t number = 1000 * atoi(arg); - options->insert(std::pair<std::string, qpid::types::Variant>(name, number)); - + (*options)[name] = number; } else { - options->insert(std::pair<std::string, qpid::types::Variant>(name, arg)); + (*options)[name] = arg; }
return 0;
Very nice catch. ACK
matahari@lists.fedorahosted.org