BUG/MEDIUM: pattern: Segfault in binary parser

The functions pat_parse_* must return 0 if fail and the number of
elements eated from **text if not fail. The function pat_parse_bin()
returns 0 or the length parsed. This causes a segfault. I just apply the
double operator "!" on the result of the function pat_parse_bin() and
the return value value match the expected value.
diff --git a/src/pattern.c b/src/pattern.c
index 38b1383..b053201 100644
--- a/src/pattern.c
+++ b/src/pattern.c
@@ -445,12 +445,18 @@
 	pattern->expect_type = SMP_T_CBIN;
 
 	if (usage == PAT_U_COMPILE)
-		return parse_binary(*text, &pattern->ptr.str, &pattern->len, err);
+		/* If the parse_binary fails, it returns 0. In succes case, it returns
+		 * the length of the arsed binary content. The function pat_parse_* 
+		 * must return 0 if fail and the number of elements eated from **text
+		 * if not fail. In succes case, this function eat always 1 elements.
+		 * The double operator "!" converts the range "1-n" to "1".
+		 */
+		return !!parse_binary(*text, &pattern->ptr.str, &pattern->len, err);
 
 	trash = get_trash_chunk();
 	pattern->len = trash->size;
 	pattern->ptr.str = trash->str;
-	return parse_binary(*text, &pattern->ptr.str, &pattern->len, err);
+	return !!parse_binary(*text, &pattern->ptr.str, &pattern->len, err);
 }
 
 /* Parse and concatenate all further strings into one. */