parse_format_string(): Explicitly set the result pointer to NULL on errors.
[adu.git] / format.c
index 48aa37111c2986d6262686723dd766c9f0ed45ef..bcdbff9ff425df1783975cf8ac62a64ab28fa40e 100644 (file)
--- a/format.c
+++ b/format.c
@@ -259,14 +259,21 @@ err:
        }
        free(info->items);
        free(info);
+       *result = NULL;
        return ret;
 }
 
+/**
+ * It's OK to pass a \p NULL pointer to this function.
+ */
 void free_format_info(struct format_info *info)
 {
        int i;
        struct format_item *item;
 
+       if (!info)
+               return;
+
        for (i = 0; (item = info->items[i]); i++) {
                if (!item->atom_ptr)
                        free(item->af.cs.string);
@@ -395,6 +402,8 @@ char *format_items(struct format_info *info, union atom_value *values)
        int i;
        char *buf = NULL;
 
+       if (!info)
+               return NULL;
        for (i = 0; info->items[i]; i++) {
                struct atom *a;
                struct format_item *fi = info->items[i];
@@ -423,6 +432,7 @@ char *format_items(struct format_info *info, union atom_value *values)
                                fi->width, &af->nf, type);
                }
                buf = adu_strcat(buf, val);
+               free(val);
        }
        return buf;
 }