Fix patches for the empty line problem which had to be applied on top of each other.

This commit is contained in:
Christoph Niethammer 2016-08-12 09:15:05 +00:00
parent 436e7c2734
commit 9e60c2e4c2
2 changed files with 57 additions and 0 deletions

View file

@ -51,5 +51,6 @@ fi
src_prepare () { src_prepare () {
patch -p1 < $SCLASS_DIR/$SCLASSFILE-0001.patch patch -p1 < $SCLASS_DIR/$SCLASSFILE-0001.patch
patch -p1 < $SCLASS_DIR/$SCLASSFILE-0002.patch
} }

View file

@ -0,0 +1,56 @@
Index: src/opari/opari2_parser_f.cc
===================================================================
--- src/opari/opari2_parser_f.cc (revision 1749)
+++ src/opari/opari2_parser_f.cc (working copy)
@@ -763,11 +763,13 @@
lines.push_back( m_lowline );
bool found_continuation_line;
- string prev_sentinel = m_sentinel;
- unsigned ignored_lines = 0;
+ bool last_was_continuation_line = false;
+ string prev_sentinel = m_sentinel;
+ unsigned ignored_lines = 0;
do
{
- found_continuation_line = false;
+ last_was_continuation_line = found_continuation_line;
+ found_continuation_line = false;
if ( m_options.form == F_FREE )
{
@@ -778,7 +780,7 @@
--com;
}
string::size_type amp = m_lowline.find_last_not_of( " \t", com );
- if ( m_lowline[ amp ] == '&' )
+ if ( m_lowline[ amp ] == '&' || ( is_empty_line() && last_was_continuation_line ) )
{
found_continuation_line = true;
}
@@ -822,8 +824,15 @@
found_continuation_line = true;
m_sentinel = prev_sentinel;
}
- else if ( found_continuation_line && !is_empty_line() )
+ else if ( is_empty_line() && last_was_continuation_line && m_options.form == F_FREE )
{
+ found_continuation_line = true;
+ lines.push_back( m_lowline );
+ m_sentinel = prev_sentinel;
+ ignored_lines--;
+ }
+ else if ( found_continuation_line )
+ {
cerr << m_curr_file << ":" << m_lineno - 1
<< ": ERROR: missing continuation line\n";
cleanup_and_exit();
@@ -840,7 +849,6 @@
OPARI2_Directive* d_new =
NewDirective( lines, directive_prefix, m_options.lang, m_curr_file,
m_lineno - lines.size() - ignored_lines + 1 );
-
if ( d_new )
{
m_waitfor_loopstart = d_new->NeedsEndLoopDirective();