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;