From: <jfa...@us...> - 2011-09-05 06:13:01
|
Revision: 7140 http://oorexx.svn.sourceforge.net/oorexx/?rev=7140&view=rev Author: jfaucher Date: 2011-09-05 06:12:55 +0000 (Mon, 05 Sep 2011) Log Message: ----------- Source literal : fixed a crash in relation with line adjustment. Modified Paths: -------------- sandbox/jlf/trunk/interpreter/parser/SourceFile.cpp Modified: sandbox/jlf/trunk/interpreter/parser/SourceFile.cpp =================================================================== --- sandbox/jlf/trunk/interpreter/parser/SourceFile.cpp 2011-09-04 21:20:50 UTC (rev 7139) +++ sandbox/jlf/trunk/interpreter/parser/SourceFile.cpp 2011-09-05 06:12:55 UTC (rev 7140) @@ -1130,7 +1130,7 @@ } } /* is the location out of bounds? */ - if (location.getLineNumber() == 0 || location.getLineNumber() - this->line_adjust > this->line_count) + if (location.getLineNumber() == 0 || location.getLineNumber() /*- this->line_adjust*/ > this->line_count) { /* just give back a null array */ return (RexxArray *)TheNullArray->copy(); @@ -1157,7 +1157,7 @@ if (location.getLineNumber() == location.getEndLine()) { /* get the line */ - RexxString *source_line = this->get(location.getLineNumber()); + RexxString *source_line = this->get(location.getLineNumber() - this->line_adjust); /* extract the line segment */ source_line = source_line->extractB(location.getOffset(), location.getEndOffset() - location.getOffset()); source->put(source_line, 1); /* insert the trailing piece */ @@ -1171,7 +1171,7 @@ else { /* get the line */ - RexxString *source_line = this->get(location.getLineNumber()); + RexxString *source_line = this->get(location.getLineNumber() - this->line_adjust); /* extract the end portion */ source_line = source_line->extractB(location.getOffset(), source_line->getBLength() - location.getOffset()); source->put(source_line, 1); /* insert the trailing piece */ @@ -1182,10 +1182,10 @@ for (size_t counter = location.getLineNumber() + 1; counter < location.getEndLine(); counter++, i++) { /* copy over the entire line */ - source->put(this->get(counter), i); + source->put(this->get(counter - this->line_adjust), i); } /* get the last line */ - RexxString *source_line = this->get(location.getEndLine()); + RexxString *source_line = this->get(location.getEndLine() - this->line_adjust); /* more than one line? */ if (location.getEndLine() > location.getLineNumber()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |