diff --git a/include/types/action.h b/include/types/action.h
index d3781cf..5cfcb57 100644
--- a/include/types/action.h
+++ b/include/types/action.h
@@ -65,6 +65,10 @@
 			struct sample_expr *expr;
 			struct cap_hdr *hdr;
 		} cap;
+		struct {
+			struct sample_expr *expr;
+			int idx;
+		} capid;
 		struct hlua_rule *hlua_rule;
 		struct {
 			struct sample_expr *expr;
diff --git a/src/proto_http.c b/src/proto_http.c
index f0ad1c2..5214d87 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -12352,9 +12352,7 @@
                                   struct session *sess, struct stream *s)
 {
 	struct sample *key;
-	struct sample_expr *expr = rule->arg.act.p[0];
 	struct cap_hdr *h;
-	int idx = (long)rule->arg.act.p[1];
 	char **cap = s->req_cap;
 	struct proxy *fe = strm_fe(s);
 	int len;
@@ -12362,12 +12360,12 @@
 
 	/* Look for the original configuration. */
 	for (h = fe->req_cap, i = fe->nb_req_cap - 1;
-	     h != NULL && i != idx ;
+	     h != NULL && i != rule->arg.capid.idx ;
 	     i--, h = h->next);
 	if (!h)
 		return 1;
 
-	key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_REQ|SMP_OPT_FINAL, expr, SMP_T_STR);
+	key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_REQ|SMP_OPT_FINAL, rule->arg.capid.expr, SMP_T_STR);
 	if (!key)
 		return 1;
 
@@ -12498,8 +12496,8 @@
 
 		rule->action       = HTTP_REQ_ACT_CUSTOM_CONT;
 		rule->action_ptr   = http_action_req_capture_by_id;
-		rule->arg.act.p[0] = expr;
-		rule->arg.act.p[1] = (void *)(long)id;
+		rule->arg.capid.expr = expr;
+		rule->arg.capid.idx  = id;
 	}
 
 	else {
@@ -12521,9 +12519,7 @@
                                   struct session *sess, struct stream *s)
 {
 	struct sample *key;
-	struct sample_expr *expr = rule->arg.act.p[0];
 	struct cap_hdr *h;
-	int idx = (long)rule->arg.act.p[1];
 	char **cap = s->res_cap;
 	struct proxy *fe = strm_fe(s);
 	int len;
@@ -12531,12 +12527,12 @@
 
 	/* Look for the original configuration. */
 	for (h = fe->rsp_cap, i = fe->nb_rsp_cap - 1;
-	     h != NULL && i != idx ;
+	     h != NULL && i != rule->arg.capid.idx ;
 	     i--, h = h->next);
 	if (!h)
 		return 1;
 
-	key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_RES|SMP_OPT_FINAL, expr, SMP_T_STR);
+	key = sample_fetch_as_type(s->be, sess, s, SMP_OPT_DIR_RES|SMP_OPT_FINAL, rule->arg.capid.expr, SMP_T_STR);
 	if (!key)
 		return 1;
 
@@ -12622,8 +12618,8 @@
 
 	rule->action       = HTTP_RES_ACT_CUSTOM_CONT;
 	rule->action_ptr   = http_action_res_capture_by_id;
-	rule->arg.act.p[0] = expr;
-	rule->arg.act.p[1] = (void *)(long)id;
+	rule->arg.capid.expr = expr;
+	rule->arg.capid.idx  = id;
 
 	*orig_arg = cur_arg;
 	return 0;
