In the case of a memory allocation failure, attempt to gracefully
handle it instead of crashing.
Signed-off-by: Russell Bryant <russell(a)russellbryant.net>
---
src/service/matahari-srv.cpp | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/src/service/matahari-srv.cpp b/src/service/matahari-srv.cpp
index fc2b00f..831837e 100644
--- a/src/service/matahari-srv.cpp
+++ b/src/service/matahari-srv.cpp
@@ -80,9 +80,22 @@ static GHashTable *qmf_map_to_hash(::qpid::types::Variant::Map
parameters)
GHashTable *hash = g_hash_table_new_full(
g_str_hash, g_str_equal, free, free);
- for (qIter=parameters.begin() ; qIter != parameters.end(); qIter++ ) {
+ if (!hash) {
+ mh_crit("Memory allocation failure.\n");
+ return NULL;
+ }
+
+ for (qIter = parameters.begin() ; qIter != parameters.end(); qIter++) {
char *key = strdup(qIter->first.c_str());
char *value = strdup(qIter->second.asString().c_str());
+
+ if (!key || !value) {
+ free(key);
+ free(value);
+ mh_crit("Memory allocation failure.\n");
+ continue;
+ }
+
g_hash_table_insert(hash, key, value);
}
--
1.7.4