diff --git a/ChangeLog b/ChangeLog
index 45a11c8..cdf80f0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
 
+0.8.11:	2004-Jun-05
+
+	* Enforsed stricter conformance with C standards.
+
 0.8.10:	2004-Jun-02
 
 	* Added const qualifier where necessary.
diff --git a/asn1c/tests/check-31.c b/asn1c/tests/check-31.c
index cfebedc..0538081 100644
--- a/asn1c/tests/check-31.c
+++ b/asn1c/tests/check-31.c
@@ -74,6 +74,8 @@
 	const uint8_t *buffer = bufferp;
 	assert(buf_pos + size <= sizeof(buf1_reconstr));
 
+	(void)key;	/* Unused argument */
+
 	fprintf(stderr,  "  writing %d (%d)\n", (int)size, buf_pos + (int)size);
 
 	for(; size; buf_pos++, size--, buffer++) {
diff --git a/asn1c/tests/check-35.c b/asn1c/tests/check-35.c
index f29d877..8fdaced 100644
--- a/asn1c/tests/check-35.c
+++ b/asn1c/tests/check-35.c
@@ -133,13 +133,15 @@
 		&& strcmp(tp->b.choice.b2.buf, "z") == 0);
 }
 
-int buf_pos;
-int buf_size;
+size_t buf_pos;
+size_t buf_size;
 uint8_t *buf;
 
 static int
 buf_fill(const void *buffer, size_t size, void *app_key) {
 
+	(void)app_key;
+
 	if(buf_pos + size > buf_size) {
 		fprintf(stderr, "%d + %d > %d\n", buf_pos, (int)size, buf_size);
 		return -1;
@@ -184,10 +186,10 @@
 }
 
 static void
-partial_read(uint8_t *buf, int size) {
+partial_read(uint8_t *buf, size_t size) {
 	T_t t, *tp;
 	ber_dec_rval_t rval;
-	int i1, i2;
+	size_t i1, i2;
 	uint8_t *buf1 = alloca(size);
 	uint8_t *buf2 = alloca(size);
 	uint8_t *buf3 = alloca(size);
@@ -203,11 +205,11 @@
 	for(i1 = 0; i1 < size; i1++) {
 		for(i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = buf;
-			int size1 = i1;
+			size_t size1 = i1;
 			uint8_t *chunk2 = buf + size1;
-			int size2 = i2 - i1;
+			size_t size2 = i2 - i1;
 			uint8_t *chunk3 = buf + size1 + size2;
-			int size3 = size - size1 - size2;
+			size_t size3 = size - size1 - size2;
 
 			fprintf(stderr, "\n%d:{%d, %d, %d}...\n",
 				size, size1, size2, size3);
diff --git a/asn1c/tests/check-41.c b/asn1c/tests/check-41.c
index 09a9d62..d36ad1e 100644
--- a/asn1c/tests/check-41.c
+++ b/asn1c/tests/check-41.c
@@ -151,13 +151,15 @@
 	*/
 }
 
-int buf_pos;
-int buf_size;
+size_t buf_pos;
+size_t buf_size;
 uint8_t *buf;
 
 static int
 buf_fill(const void *buffer, size_t size, void *app_key) {
 
+	(void)app_key;	/* Unused argument */
+
 	if(buf_pos + size > buf_size) {
 		fprintf(stderr, "%d + %d > %d\n", buf_pos, (int)size, buf_size);
 		return -1;
@@ -202,10 +204,10 @@
 }
 
 static void
-partial_read(uint8_t *buf, int size) {
+partial_read(uint8_t *buf, size_t size) {
 	T_t t, *tp;
 	ber_dec_rval_t rval;
-	int i1, i2;
+	size_t i1, i2;
 	uint8_t *buf1 = alloca(size);
 	uint8_t *buf2 = alloca(size);
 	uint8_t *buf3 = alloca(size);
@@ -221,11 +223,11 @@
 	for(i1 = 0; i1 < size; i1++) {
 		for(i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = buf;
-			int size1 = i1;
+			size_t size1 = i1;
 			uint8_t *chunk2 = buf + size1;
-			int size2 = i2 - i1;
+			size_t size2 = i2 - i1;
 			uint8_t *chunk3 = buf + size1 + size2;
-			int size3 = size - size1 - size2;
+			size_t size3 = size - size1 - size2;
 
 			fprintf(stderr, "\n%d:{%d, %d, %d}...\n",
 				size, size1, size2, size3);
diff --git a/configure b/configure
index b7be211..f7468dc 100755
--- a/configure
+++ b/configure
@@ -1650,7 +1650,7 @@
 
 # Define the identity of the package.
 PACKAGE=asn1c
-VERSION=0.8.10
+VERSION=0.8.11
 
 cat >>confdefs.h <<_ACEOF
 #define PACKAGE "$PACKAGE"
@@ -4756,7 +4756,7 @@
 # Check whether --enable-autoconf or --disable-autoconf was given.
 if test "${enable_autoconf+set}" = set; then
   enableval="$enable_autoconf"
-  ADD_CFLAGS="-Werror"
+  ADD_CFLAGS="-Werror -W"
 fi;
 
 
diff --git a/configure.in b/configure.in
index a4ad1b0..ea31dbb 100644
--- a/configure.in
+++ b/configure.in
@@ -2,7 +2,7 @@
 AC_INIT(libasn1parser/asn1p_y.y)
 AC_CANONICAL_SYSTEM
 AC_PREREQ(2.53)
-AM_INIT_AUTOMAKE(asn1c, 0.8.10)
+AM_INIT_AUTOMAKE(asn1c, 0.8.11)
 
 AC_SUBST(PATH)
 
@@ -45,7 +45,7 @@
 
 AC_ARG_ENABLE(autoconf,
   [  --enable-Werror         abort compilation after any C compiler warning],
-  ADD_CFLAGS="-Werror")
+  ADD_CFLAGS="-Werror -W")
 AC_SUBST(ADD_CFLAGS)
 
 dnl Add these flags if we're using GCC.
