Index: src/Common/SemanticError.cc
===================================================================
--- src/Common/SemanticError.cc	(revision 79970ed6c19a6660b1238fe9021a3df4e5884245)
+++ src/Common/SemanticError.cc	(revision 390630115fa35ef925f9e8e3037ed8611c6097c0)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// SemanticError.cc -- 
+// SemanticError.cc --
 //
 // Author           : Richard C. Bilson
@@ -26,9 +26,13 @@
 
 SemanticError::SemanticError( std::string error ) {
-	errors.push_back( std::string( "Error: " ) + error );
+  append( error );
 }
 
 void SemanticError::append( SemanticError &other ) {
-	errors.splice( errors.end(), other.errors );
+  errors.splice( errors.end(), other.errors );
+}
+
+void SemanticError::append( const std::string & msg ) {
+  errors.push_back( std::string( "Error: ") + msg );
 }
 
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 79970ed6c19a6660b1238fe9021a3df4e5884245)
+++ src/Common/SemanticError.h	(revision 390630115fa35ef925f9e8e3037ed8611c6097c0)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// SemanticError.h -- 
+// SemanticError.h --
 //
 // Author           : Richard C. Bilson
@@ -31,4 +31,5 @@
 
 	void append( SemanticError &other );
+	void append( const std::string & );
 	bool isEmpty() const;
 	void print( std::ostream &os );
@@ -42,9 +43,7 @@
 template< typename T >
 SemanticError::SemanticError( const std::string &error, const T *obj ) {
-	std::ostringstream os;
-	os << "Error: " << error;
-	obj->print( os );
-	errors.push_back( os.str() );
+	append( toString( error, obj ) );
 }
+
 
 #endif // SEMANTICERROR_H
