﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
145	lex_string_ builds comment descriptors with incorrect back-threads	Gary Dixon	Gary Dixon	"The lex_string_$lex entrypoint incorrectly sets the comment.Plast pointer to point to the current comment descriptor, rather than to its predecessor.  This bug prevents walking backward through the comments found in a lexed input string.

Also, several of the PL/I comments in the lex_string_.pl1 code are either misleading or inadequate. These make the code harder to read/understand.

I suggest the following changes to repair the comment.Plast bug, and enhance the code comments.

cpa [lpn lex_string_.pl1] ==

A580                     comment.Pnext -> comment.Plast = **comment.Pnext**;
Changed by B to:
B580                     comment.Pnext -> comment.Plast =** Pcomment**;


A616                /*     and doubled quotes are _\010n_\010o_\010t being retained, copy the quoted          */
Changed by B to:
B616                /*     and doubled quotes are NOT being retained, copy the quoted     */


A804                     stmt.Lvalue = min(max_Lvalue, stmt.Lvalue - Lstr);
Changed by B to:
B804                          /* Set actual length of prior stmt.                         */
B805                     stmt.Lvalue = min(max_Lvalue, stmt.Lvalue - Lstr);
B806                          /* If prior statement ended on current line, increment the  */
B807                          /* statement-in-line counter (to be used in new stmt).      */


Inserted in B:
B812      
Preceding:
A809                     stmt.Pnext = allocate (Parea, size(stmt));


A842                /*     If a used token already exists, reuse it.                      */
Changed by B to:
B846                /*     If just-prior token was ""unmade"", reuse the token descriptor.  */


Inserted in B:
B863                          /* Allocate a new token descriptor.                         */
Preceding:
A859                     if APtoken = null then do;

Comparison finished: 6 differences, 13 lines."	defect	assigned	minor		Tools				
