From 40eb7a316af28b72c7a07042d6b8b7b1a06792b5 Mon Sep 17 00:00:00 2001
From: Vsevolod Stakhov <vsevolod@highsecure.ru>
Date: Wed, 21 Aug 2013 15:58:53 +0100
Subject: Fix whitespace parsing for rcl arrays.

---
 src/rcl/rcl_parser.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

(limited to 'src')

diff --git a/src/rcl/rcl_parser.c b/src/rcl/rcl_parser.c
index 90202b6c5..797c8850c 100644
--- a/src/rcl/rcl_parser.c
+++ b/src/rcl/rcl_parser.c
@@ -573,7 +573,6 @@ rspamd_cl_parse_key (struct rspamd_cl_parser *parser,
 			else {
 				/* Invalid identifier */
 				rspamd_cl_set_err (chunk, RSPAMD_CL_ESYNTAX, "key must begin with a letter", err);
-				assert (0);
 				return FALSE;
 			}
 		}
@@ -724,20 +723,22 @@ rspamd_cl_parse_value (struct rspamd_cl_parser *parser, struct rspamd_cl_chunk *
 {
 	const guchar *p, *c;
 	struct rspamd_cl_stack *st;
-	rspamd_cl_object_t *obj;
+	rspamd_cl_object_t *obj = NULL;
 
 	p = chunk->pos;
 
 	while (p < chunk->end) {
-		if (parser->stack->obj->type == RSPAMD_CL_ARRAY) {
-			/* Object must be allocated */
-			obj = rspamd_cl_object_new ();
-			parser->cur_obj = obj;
-			LL_PREPEND (parser->stack->obj->value.ov, parser->cur_obj);
-		}
-		else {
-			/* Object has been already allocated */
-			obj = parser->cur_obj;
+		if (obj == NULL) {
+			if (parser->stack->obj->type == RSPAMD_CL_ARRAY) {
+				/* Object must be allocated */
+				obj = rspamd_cl_object_new ();
+				parser->cur_obj = obj;
+				LL_PREPEND (parser->stack->obj->value.ov, parser->cur_obj);
+			}
+			else {
+				/* Object has been already allocated */
+				obj = parser->cur_obj;
+			}
 		}
 		c = p;
 		switch (*p) {
-- 
cgit v1.2.3