Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision 150ec335b7adf4676c0cdefdf1c5851bb87eba35)
+++ src/ResolvExpr/Unify.cc	(revision aeef2bdecb198061ca07acd17b5e5638278020cf)
@@ -17,5 +17,5 @@
 #include <iterator>               // for back_insert_iterator, back_inserter
 #include <map>                    // for _Rb_tree_const_iterator, _Rb_tree_i...
-#include <memory>                 // for unique_ptr, auto_ptr
+#include <memory>                 // for unique_ptr
 #include <set>                    // for set
 #include <string>                 // for string, operator==, operator!=, bas...
@@ -170,5 +170,5 @@
 				Type *common = 0;
 				// attempt to unify equivalence class type (which has qualifiers stripped, so they must be restored) with the type to bind to
-				std::auto_ptr< Type > newType( curClass.type->clone() );
+				std::unique_ptr< Type > newType( curClass.type->clone() );
 				newType->get_qualifiers() = typeInst->get_qualifiers();
 				if ( unifyInexact( newType.get(), other, env, needAssertions, haveAssertions, openVars, widenMode & WidenMode( curClass.allowWidening, true ), indexer, common ) ) {
@@ -459,9 +459,4 @@
 		if ( otherArray && arrayType->get_isVarLen() == otherArray->get_isVarLen() ) {
 
-			// not positive this is correct in all cases, but it's needed for typedefs
-			if ( arrayType->get_isVarLen() || otherArray->get_isVarLen() ) {
-				return;
-			}
-
 			if ( ! arrayType->get_isVarLen() && ! otherArray->get_isVarLen() &&
 				arrayType->get_dimension() != 0 && otherArray->get_dimension() != 0 ) {
