bc: fix interactive handling of comments in strings and quotes in comments
function old new delta zbc_lex_next 1965 1979 +14 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		| @@ -2910,25 +2910,29 @@ static bool bc_lex_more_input(void) | ||||
| 		string = G.input_buffer.v + prevlen; | ||||
| 		while (*string) { | ||||
| 			char c = *string; | ||||
| 			if (string == G.input_buffer.v || string[-1] != '\\') { | ||||
| 				if (IS_BC) | ||||
| 					str ^= (c == '"'); | ||||
| 				else { | ||||
| 					if (c == ']') | ||||
| 						str -= 1; | ||||
| 					else if (c == '[') | ||||
| 						str += 1; | ||||
| 			if (!comment) { | ||||
| 				if (string == G.input_buffer.v || string[-1] != '\\') { | ||||
| 					if (IS_BC) | ||||
| 						str ^= (c == '"'); | ||||
| 					else { | ||||
| 						if (c == ']') | ||||
| 							str -= 1; | ||||
| 						else if (c == '[') | ||||
| 							str += 1; | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 			string++; | ||||
| 			if (c == '/' && *string == '*') { | ||||
| 				comment = true; | ||||
| 				string++; | ||||
| 				continue; | ||||
| 			} | ||||
| 			if (c == '*' && *string == '/') { | ||||
| 				comment = false; | ||||
| 				string++; | ||||
| 			if (!str) { | ||||
| 				if (c == '/' && *string == '*') { | ||||
| 					comment = true; | ||||
| 					string++; | ||||
| 					continue; | ||||
| 				} | ||||
| 				if (c == '*' && *string == '/') { | ||||
| 					comment = false; | ||||
| 					string++; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if (str != 0 || comment) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user