diff --git a/include/types/map.h b/include/types/map.h
index 4463541..59c1a22 100644
--- a/include/types/map.h
+++ b/include/types/map.h
@@ -57,8 +57,6 @@
 	struct list list;              /* used for listing */
 	struct map_reference *ref;     /* the reference used for unindexed entries */
 	struct sample_conv *conv;      /* original converter descriptor */
-	int (*parse)(const char *text, /* The function that can parse the output value */
-	             struct sample_storage *smp);
 	struct pattern_expr *pat;      /* the pattern matching associated to the map */
 	int do_free;                   /* set if <pat> is the orignal pat and must be freed */
 	char *default_value;           /* a copy of default value. This copy is
diff --git a/include/types/pattern.h b/include/types/pattern.h
index 7b9f8fd..72022e3 100644
--- a/include/types/pattern.h
+++ b/include/types/pattern.h
@@ -155,6 +155,7 @@
  */
 struct pattern_expr {
 	int (*parse)(const char *text, struct pattern *pattern, char **err);
+	int (*parse_smp)(const char *text, struct sample_storage *smp);
 	int (*index)(struct pattern_expr *, struct pattern *, char **);
 	void (*delete)(struct pattern_expr *, struct pattern *);
 	struct sample_storage **(*find_smp)(struct pattern_expr *, struct pattern *);
diff --git a/src/dumpstats.c b/src/dumpstats.c
index aecce5f..8b7782e 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -1613,7 +1613,7 @@
 			     stats_map_lookup_next(si)) {
 				smp = pattern_find_smp(args[3], appctx->ctx.map.desc->pat, NULL);
 				if (smp)
-					appctx->ctx.map.desc->parse(value, *smp);
+					appctx->ctx.map.desc->pat->parse_smp(value, *smp);
 			}
 
 			/* The set is done, send message. */
@@ -1974,7 +1974,7 @@
 				 * is canceled for this 'descriptor', but continue, for
 				 * the other descriptors.
 				 */
-				if (!appctx->ctx.map.desc->parse(ent->value, smp)) {
+				if (!appctx->ctx.map.desc->pat->parse_smp(ent->value, smp)) {
 					free(smp);
 					continue;
 				}
diff --git a/src/map.c b/src/map.c
index b595b02..b266614 100644
--- a/src/map.c
+++ b/src/map.c
@@ -314,7 +314,7 @@
 		return 0;
 
 	/* first read and convert value */
-	if (!desc->parse(ent->value, smp)) {
+	if (!desc->pat->parse_smp(ent->value, smp)) {
 		memprintf(err, "parse value failed at line %d of file <%s>",
 		          ent->line, desc->ref->reference);
 		return 0;
@@ -384,10 +384,10 @@
 
 	/* check the output parse method */
 	switch (desc->conv->out_type) {
-	case SMP_T_STR:  desc->parse = map_parse_str;  break;
-	case SMP_T_UINT: desc->parse = map_parse_int;  break;
-	case SMP_T_IPV4: desc->parse = map_parse_ip;   break;
-	case SMP_T_IPV6: desc->parse = map_parse_ip6;  break;
+	case SMP_T_STR:  desc->pat->parse_smp = map_parse_str;  break;
+	case SMP_T_UINT: desc->pat->parse_smp = map_parse_int;  break;
+	case SMP_T_IPV4: desc->pat->parse_smp = map_parse_ip;   break;
+	case SMP_T_IPV6: desc->pat->parse_smp = map_parse_ip6;  break;
 	default:
 		memprintf(err, "map: internal haproxy error: no default parse case for the input type <%d>.",
 		          conv->out_type);
@@ -442,7 +442,7 @@
 			memprintf(err, "out of memory");
 			return 0;
 		}
-		if (!desc->parse(desc->default_value, desc->def)) {
+		if (!desc->pat->parse_smp(desc->default_value, desc->def)) {
 			memprintf(err, "Cannot parse default value");
 			return 0;
 		}
