Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 1764a63346907cd7fa14efc3c91719a8f214715a)
+++ libcfa/src/parseconfig.cfa	(revision a3f2a3e2c41af22a48c446b7d07d4dd45849b244)
@@ -119,4 +119,5 @@
 		for ( j; num_entries ) {
 		  if ( strcmp( src_key, entries[j].key ) != 0 ) continue;
+		  	// Parse the data
 		  	if ( !entries[j].parse( src_value, entries[j].variable ) ) {
 				delete( kv_pairs );
@@ -124,7 +125,6 @@
 			}
 
-			// Validate the parsed data, if necessary
-			if ( entries[j].validate != (bool (*)(void *))0p
-					&& !entries[j].validate( entries[j].variable ) ) {
+			// Validate the data
+			if ( !entries[j].validate( entries[j].variable ) ) {
 				delete( kv_pairs );
 				throw (Validation_Failure){};
Index: libcfa/src/parseconfig.hfa
===================================================================
--- libcfa/src/parseconfig.hfa	(revision 1764a63346907cd7fa14efc3c91719a8f214715a)
+++ libcfa/src/parseconfig.hfa	(revision a3f2a3e2c41af22a48c446b7d07d4dd45849b244)
@@ -18,4 +18,6 @@
 };
 
+bool null_validator( void * ) { return true; }
+
 static inline void ?{}( config_entry & this ) {}
 
@@ -25,5 +27,5 @@
 	this.variable = (void *)&variable;
 	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
-	this.validate = (bool (*)(void *))(bool (*)(T &))0p;
+	this.validate = null_validation;
 }
 
@@ -41,5 +43,5 @@
 	this.variable = (void *)&variable;
 	this.parse    = (bool (*)(const char *, void *))(bool (*)(const char *, T &))parse;
-	this.validate = (bool (*)(void *))(bool (*)(T &))0p;
+	this.validate = null_validation;
 }
 
