type = process_op(event, field, &token);
 
        if (test_type_token(type, token, EVENT_DELIM, ","))
-               goto out_free;
+               goto out_free_field;
        free_token(token);
 
        arg->flags.field = field;
        type = read_token_item(tok);
        return type;
 
- out_free:
+out_free_field:
+       free_arg(field);
+out_free:
        free_token(token);
        *tok = NULL;
        return EVENT_ERROR;
 
        type = process_arg(event, field, &token);
        if (test_type_token(type, token, EVENT_DELIM, ","))
-               goto out_free;
+               goto out_free_field;
 
        arg->symbol.field = field;
 
        type = read_token_item(tok);
        return type;
 
- out_free:
+out_free_field:
+       free_arg(field);
+out_free:
        free_token(token);
        *tok = NULL;
        return EVENT_ERROR;