Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/xmpp_helper.c @ 2210:ea90906cb691
Add a few more checks
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Fri, 23 Oct 2015 20:47:26 +0200 |
parents | 412322678d59 |
children | f5402d705f67 |
comparison
equal
deleted
inserted
replaced
2209:412322678d59 | 2210:ea90906cb691 |
---|---|
106 | 106 |
107 const gchar* lm_message_node_get_child_value(LmMessageNode *node, | 107 const gchar* lm_message_node_get_child_value(LmMessageNode *node, |
108 const gchar *child) | 108 const gchar *child) |
109 { | 109 { |
110 LmMessageNode *tmp; | 110 LmMessageNode *tmp; |
111 | |
112 if (G_UNLIKELY(!node || !child)) return NULL; | |
113 | |
111 tmp = lm_message_node_find_child(node, child); | 114 tmp = lm_message_node_find_child(node, child); |
112 if (tmp) { | 115 if (tmp) { |
113 const gchar *val = lm_message_node_get_value(tmp); | 116 const gchar *val = lm_message_node_get_value(tmp); |
114 return (val ? val : ""); | 117 return (val ? val : ""); |
115 } | 118 } |
140 LmMessageNode *lm_message_node_new(const gchar *name, const gchar *xmlns) | 143 LmMessageNode *lm_message_node_new(const gchar *name, const gchar *xmlns) |
141 { | 144 { |
142 LmMessageNode *node; | 145 LmMessageNode *node; |
143 | 146 |
144 node = g_new0 (LmMessageNode, 1); | 147 node = g_new0 (LmMessageNode, 1); |
148 if (G_UNLIKELY(!node)) return NULL; | |
149 | |
145 node->name = g_strdup (name); | 150 node->name = g_strdup (name); |
146 node->value = NULL; | 151 node->value = NULL; |
147 node->raw_mode = FALSE; | 152 node->raw_mode = FALSE; |
148 node->attributes = NULL; | 153 node->attributes = NULL; |
149 node->next = NULL; | 154 node->next = NULL; |
158 | 163 |
159 void lm_message_node_insert_childnode(LmMessageNode *node, | 164 void lm_message_node_insert_childnode(LmMessageNode *node, |
160 LmMessageNode *child) | 165 LmMessageNode *child) |
161 { | 166 { |
162 LmMessageNode *x; | 167 LmMessageNode *x; |
168 if (G_UNLIKELY(!node)) return; | |
163 lm_message_node_deep_ref(child); | 169 lm_message_node_deep_ref(child); |
164 | 170 |
165 if (node->children == NULL) | 171 if (node->children == NULL) |
166 node->children = child; | 172 node->children = child; |
167 else { | 173 else { |
171 } | 177 } |
172 } | 178 } |
173 | 179 |
174 void lm_message_node_deep_ref(LmMessageNode *node) | 180 void lm_message_node_deep_ref(LmMessageNode *node) |
175 { | 181 { |
176 if (node == NULL) | 182 if (G_UNLIKELY(!node)) return; |
177 return; | |
178 lm_message_node_ref(node); | 183 lm_message_node_ref(node); |
179 lm_message_node_deep_ref(node->next); | 184 lm_message_node_deep_ref(node->next); |
180 lm_message_node_deep_ref(node->children); | 185 lm_message_node_deep_ref(node->children); |
181 } | 186 } |
182 | 187 |
263 const char *xmlns) | 268 const char *xmlns) |
264 { | 269 { |
265 LmMessageNode *x; | 270 LmMessageNode *x; |
266 const char *p; | 271 const char *p; |
267 | 272 |
268 if (!node) return NULL; | 273 if (G_UNLIKELY(!node)) return NULL; |
269 | 274 |
270 for (x = node->children ; x; x = x->next) { | 275 for (x = node->children ; x; x = x->next) { |
271 if ((p = lm_message_node_get_attribute(x, "xmlns")) && !strcmp(p, xmlns)) | 276 if ((p = lm_message_node_get_attribute(x, "xmlns")) && !strcmp(p, xmlns)) |
272 break; | 277 break; |
273 } | 278 } |
385 s = lm_message_node_get_value(x); | 390 s = lm_message_node_get_value(x); |
386 if (s && *s) desc = s; | 391 if (s && *s) desc = s; |
387 | 392 |
388 // And sometimes there is a text message | 393 // And sometimes there is a text message |
389 s = lm_message_node_get_child_value(x, "text"); | 394 s = lm_message_node_get_child_value(x, "text"); |
390 | |
391 if (s && *s) desc = s; | 395 if (s && *s) desc = s; |
392 | 396 |
393 // If we still have no description, let's give up | 397 // If we still have no description, let's give up |
394 if (!desc || !*desc) | 398 if (!desc || !*desc) |
395 return; | 399 return; |