Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 6a57da5334f1340c33beb304ddd8f4b840f1f515)
+++ src/Parser/parser.cc	(revision 3cfe27f396428120b21372724bf1494f2e955648)
@@ -6358,5 +6358,5 @@
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (2)].decl);
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
 		}
     break;
@@ -6368,5 +6368,5 @@
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
 		}
     break;
@@ -6378,5 +6378,5 @@
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
-			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) ) );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
 		}
     break;
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 6a57da5334f1340c33beb304ddd8f4b840f1f515)
+++ src/Parser/parser.yy	(revision 3cfe27f396428120b21372724bf1494f2e955648)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Mar 21 18:18:34 2016
-// Update Count     : 1497
+// Last Modified On : Thu Mar 24 16:16:16 2016
+// Update Count     : 1498
 // 
 
@@ -1029,5 +1029,5 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $1;
+			$$ = $1->addInitializer( $2 );
 		}
 	| declaration_qualifier_list new_variable_specifier initializer_opt
@@ -1036,10 +1036,10 @@
 		{
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
-			$$ = $2->addQualifiers( $1 );
+			$$ = $2->addQualifiers( $1 )->addInitializer( $3 );;
 		}
 	| new_variable_declaration pop ',' push identifier_or_type_name initializer_opt
 		{
 			typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
-			$$ = $1->appendList( $1->cloneType( $5 ) );
+			$$ = $1->appendList( $1->cloneType( $5 )->addInitializer( $6 ) );
 		}
 	;
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 6a57da5334f1340c33beb304ddd8f4b840f1f515)
+++ src/ResolvExpr/Resolver.cc	(revision 3cfe27f396428120b21372724bf1494f2e955648)
@@ -10,6 +10,6 @@
 // Created On       : Sun May 17 12:17:01 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Feb  9 21:57:52 2016
-// Update Count     : 179
+// Last Modified On : Thu Mar 24 16:43:11 2016
+// Update Count     : 181
 //
 
@@ -165,6 +165,13 @@
 		Type *new_type = resolveTypeof( objectDecl->get_type(), *this );
 		objectDecl->set_type( new_type );
+		// To handle initialization of routine pointers, e.g., int (*fp)(int) = foo(), means that class-variable
+		// initContext is changed multiple time because the LHS is analysed twice. The second analysis changes
+		// initContext because of a function type can contain object declarations in the return and parameter types. So
+		// each value of initContext is retained, so the type on the first analysis is preserved and used for selecting
+		// the RHS.
+		Type *temp = initContext;
 		initContext = new_type;
 		SymTab::Indexer::visit( objectDecl );
+		initContext = temp;
 	}
 
Index: src/libcfa/stdlib.c
===================================================================
--- src/libcfa/stdlib.c	(revision 6a57da5334f1340c33beb304ddd8f4b840f1f515)
+++ src/libcfa/stdlib.c	(revision 3cfe27f396428120b21372724bf1494f2e955648)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:10:29 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Mar 22 22:34:26 2016
-// Update Count     : 145
+// Last Modified On : Wed Mar 23 13:26:42 2016
+// Update Count     : 146
 //
 
@@ -244,5 +244,5 @@
 
 void rand48seed( long int s ) { srand48( s ); }
-char rand48() { return lrand48(); }
+char rand48() { return mrand48(); }
 int rand48() { return mrand48(); }
 unsigned int rand48() { return lrand48(); }
