Fixes getString

This commit is contained in:
Yury Delendik 2013-02-23 11:35:18 -06:00
parent 4247339d28
commit 95e5429707
2 changed files with 17 additions and 0 deletions

View File

@ -360,6 +360,7 @@ var Lexer = (function LexerClosure() {
do {
ch = stream.getChar();
switch (ch) {
case null:
case undefined:
warn('Unterminated string');
done = true;
@ -378,6 +379,7 @@ var Lexer = (function LexerClosure() {
case '\\':
ch = stream.getChar();
switch (ch) {
case null:
case undefined:
warn('Unterminated string');
done = true;
@ -427,10 +429,12 @@ var Lexer = (function LexerClosure() {
break;
default:
str += ch;
break;
}
break;
default:
str += ch;
break;
}
} while (!done);
return str;

View File

@ -14,6 +14,19 @@ describe('parser', function() {
expect(result).toEqual(11.234);
});
it('should stop parsing strings at the end of stream', function() {
var input = new StringStream('1$4)');
input.getChar = function(super_getChar) {
// simulating end of file using null (see issue 2766)
var ch = super_getChar.call(input);
return ch == '$' ? null : ch;
}.bind(input, input.getChar);
var lexer = new Lexer(input);
var result = lexer.getString();
expect(result).toEqual('1');
});
it('should not throw exception on bad input', function() {
// '8 0 2 15 5 2 2 2 4 3 2 4'
// should be parsed as