Index: extensions/Cite/Cite.i18n.php
===================================================================
--- extensions/Cite/Cite.i18n.php	(revision 16313)
+++ extensions/Cite/Cite.i18n.php	(working copy)
@@ -31,6 +31,7 @@
 	'cite_error_' . CITE_ERROR_REFERENCES_INVALID_INPUT      => 'Invalid input; expecting none',
 	'cite_error_' . CITE_ERROR_REFERENCES_INVALID_PARAMETERS => 'Invalid parameters; expecting none',
 	'cite_error_' . CITE_ERROR_REFERENCES_NO_BACKLINK_LABEL  => "Ran out of custom backlink labels, define more in the \"''cite_references_link_many_format_backlink_labels''\" message",
+	'cite_error_' . CITE_ERROR_INCLUDED_REF => 'Closing &lt;/ref&gt; missing for &lt;ref&gt; tag',
 
 	/*
 	   Output formatting
Index: extensions/Cite/Cite.php
===================================================================
--- extensions/Cite/Cite.php	(revision 16313)
+++ extensions/Cite/Cite.php	(working copy)
@@ -44,7 +44,8 @@
 		'CITE_ERROR_REF_NO_INPUT',
 		'CITE_ERROR_REFERENCES_INVALID_INPUT',
 		'CITE_ERROR_REFERENCES_INVALID_PARAMETERS',
-		'CITE_ERROR_REFERENCES_NO_BACKLINK_LABEL'
+		'CITE_ERROR_REFERENCES_NO_BACKLINK_LABEL',
+		'CITE_ERROR_INCLUDED_REF'
 	)
 );
 
@@ -185,6 +186,8 @@
 						return $this->error( CITE_ERROR_REF_NUMERIC_KEY );
 					else
 						return $this->stack( $str, $key );
+					elseif (strpos(preg_replace('%<([^ ]+?).*?>.*?</\\1 *>|<!--.*?-->%','',$str),'<ref>') !== false)
+						return $this->error( CITE_ERROR_INCLUDED_REF );
 				else if ( $key === null )
 					return $this->stack( $str );
 				else if ( $key === false )
