diff --git a/include/proto/sample.h b/include/proto/sample.h
index 94226d2..6cca99a 100644
--- a/include/proto/sample.h
+++ b/include/proto/sample.h
@@ -92,22 +92,22 @@
 		/* Fall through */
 
 	case SMP_T_STR:
-		if ((smp->data.u.str.len < 0) ||
-		    (smp->data.u.str.size && smp->data.u.str.len >= smp->data.u.str.size))
+		if ((smp->data.u.str.data < 0) ||
+		    (smp->data.u.str.size && smp->data.u.str.data >= smp->data.u.str.size))
 			return 0;
 
-		if (smp->data.u.str.str[smp->data.u.str.len] == 0)
+		if (smp->data.u.str.area[smp->data.u.str.data] == 0)
 			return 1;
 
 		if (!smp->data.u.str.size || (smp->flags & SMP_F_CONST))
 			return 0;
 
-		smp->data.u.str.str[smp->data.u.str.len] = 0;
+		smp->data.u.str.area[smp->data.u.str.data] = 0;
 		return 1;
 
 	case SMP_T_BIN:
-		return (smp->data.u.str.len >= 0) &&
-		       (!smp->data.u.str.size || smp->data.u.str.len <= smp->data.u.str.size);
+		return (smp->data.u.str.data >= 0) &&
+		       (!smp->data.u.str.size || smp->data.u.str.data <= smp->data.u.str.size);
 
 	default:
 		return 1;
@@ -145,18 +145,18 @@
 
 	case SMP_T_STR:
 		if (!smp->data.u.str.size ||
-		    smp->data.u.str.len < 0 ||
-		    smp->data.u.str.len >= smp->data.u.str.size)
+		    smp->data.u.str.data < 0 ||
+		    smp->data.u.str.data >= smp->data.u.str.size)
 			return 0;
 
-		if (smp->data.u.str.str[smp->data.u.str.len] != 0)
-			smp->data.u.str.str[smp->data.u.str.len] = 0;
+		if (smp->data.u.str.area[smp->data.u.str.data] != 0)
+			smp->data.u.str.area[smp->data.u.str.data] = 0;
 		return 1;
 
 	case SMP_T_BIN:
 		return smp->data.u.str.size &&
-		       smp->data.u.str.len >= 0 &&
-		       smp->data.u.str.len <= smp->data.u.str.size;
+		       smp->data.u.str.data >= 0 &&
+		       smp->data.u.str.data <= smp->data.u.str.size;
 
 	default:
 		return 1;
