Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 6d8e1ab77747d1ff3e4498279c8f78187e962376)
+++ libcfa/src/parseconfig.cfa	(revision a0d6987fec4cacbfde8013d6ab6bb1d53398a069)
@@ -130,22 +130,21 @@
 		for ( j; num_entries ) {
 		  if ( strcmp( src_key, entries[j].key ) != 0 ) continue;
-		  	if ( entries[j].parse( src_value, entries[j].variable ) ) {
-				++entries_so_far;
-
-				// Validate the parsed data, if necessary
-				if ( entries[j].validate != (bool (*)(void *))0p ) {
-					if ( !entries[j].validate( entries[j].variable ) ) {
-						delete( kv_pairs );
-						serr | "Error: config value at key '" | entries[j].key | "' did not pass validation";
-						throw (Validation_Failure){};
-					}
-				}
-
-				break;
+		  	if ( !entries[j].parse( src_value, entries[j].variable ) ) {
+				delete( kv_pairs );
+				serr | "Error: value '" | src_value | "' for key '" | src_key | "' could not be parsed";
+				throw (Parse_Failure){};
 			}
 
-			delete( kv_pairs );
-			serr | "Error: value '" | src_value | "' for key '" | src_key | "' could not be parsed";
-			throw (Parse_Failure){};
+			// Validate the parsed data, if necessary
+			if ( entries[j].validate != (bool (*)(void *))0p
+					&& !entries[j].validate( entries[j].variable ) ) {
+				delete( kv_pairs );
+				serr | "Error: config value at key '" | entries[j].key | "' did not pass validation";
+				throw (Validation_Failure){};
+			}
+
+			++entries_so_far;
+
+			break;
 		}
 	}
