Index: libcfa/src/parseconfig.cfa
===================================================================
--- libcfa/src/parseconfig.cfa	(revision 12b5b226912309b339c7851d8a6976ac122010f9)
+++ libcfa/src/parseconfig.cfa	(revision e4b37a171829ac030d3f77527d03e89fa5805060)
@@ -24,5 +24,5 @@
 
 struct KVPairs {
-	int size, max_size;
+	unsigned int size, max_size;
 	* [ char *, char * ] data;
 };
@@ -30,5 +30,5 @@
 	size = 0; max_size = 0; data = 0p;
 }
-void ?{}( KVPairs & kvp, int size ) { 					// initialization
+void ?{}( KVPairs & kvp, size_t size ) { 				// initialization
 	kvp.[ size, max_size ] = [ 0, size ];
 	kvp.data = alloc( size );
@@ -64,5 +64,5 @@
 // Parse configuration from a file formatted in shell style
 KVPairs & parse_tabular_config_format( const char * config_file, size_t num_entries ) {
-	KVPairs kv_pairs = { num_entries };
+	* KVPairs kv_pairs = new( num_entries );
 
 	ifstream in;
@@ -79,5 +79,5 @@
 			in | value;
 
-			add_kv_pair( kv_pairs, key, value );
+			add_kv_pair( *kv_pairs, key, value );
 
 		  if ( eof( in ) ) break;
@@ -85,15 +85,15 @@
 		} // for
 	} catch( Open_Failure * ex; ex->istream == &in ) {
-		^kv_pairs{};
+		^(*kv_pairs){};
 		exit | "Error: could not open input file \"" | config_file | "\"";
 	} // try
 	close( in );
 
-	return kv_pairs;
+	return *kv_pairs;
 }
 
 // Parse configuration values from intermediate format
 void parse_config( const char * config_file, config_entry entries[], size_t num_entries ) {
-	KVPairs kv_pairs = parse_tabular_config_format( config_file, num_entries );
+	KVPairs & kv_pairs = parse_tabular_config_format( config_file, num_entries );
 
 	int entries_so_far = 0;
