Fixed issue: Invalid escape sequences in string literals not raising errors (e.g. \q)
This commit is contained in:
@@ -552,9 +552,12 @@ public class LexState extends Constants {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
if (!isdigit(current))
|
if (!isdigit(current)) {
|
||||||
save_and_next(); /* handles \\, \", \', and \? */
|
if (current == '\\' || current == '"' || current == '\'')
|
||||||
else { /* \xxx */
|
save_and_next();
|
||||||
|
else
|
||||||
|
lexerror("invalid escape sequence", TK_STRING);
|
||||||
|
} else { /* \xxx */
|
||||||
int i = 0;
|
int i = 0;
|
||||||
c = 0;
|
c = 0;
|
||||||
do {
|
do {
|
||||||
@@ -2150,4 +2153,4 @@ public class LexState extends Constants {
|
|||||||
|
|
||||||
/* }====================================================================== */
|
/* }====================================================================== */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import junit.framework.TestCase;
|
|||||||
import org.luaj.vm2.Globals;
|
import org.luaj.vm2.Globals;
|
||||||
import org.luaj.vm2.LuaDouble;
|
import org.luaj.vm2.LuaDouble;
|
||||||
import org.luaj.vm2.LuaInteger;
|
import org.luaj.vm2.LuaInteger;
|
||||||
|
import org.luaj.vm2.LuaError;
|
||||||
import org.luaj.vm2.LuaValue;
|
import org.luaj.vm2.LuaValue;
|
||||||
import org.luaj.vm2.libs.jse.JsePlatform;
|
import org.luaj.vm2.libs.jse.JsePlatform;
|
||||||
|
|
||||||
@@ -61,7 +62,17 @@ public class SimpleTests extends TestCase {
|
|||||||
"print( 2 )\n";
|
"print( 2 )\n";
|
||||||
doTest( s );
|
doTest( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testInvalidStringEscapeFails() {
|
||||||
|
try {
|
||||||
|
globals.load("local s = \"bad\\qescape\"\nprint(s)\n", "script");
|
||||||
|
fail("expected invalid escape sequence");
|
||||||
|
} catch (LuaError e) {
|
||||||
|
assertTrue("unexpected error: " + e.getMessage(),
|
||||||
|
e.getMessage().indexOf("invalid escape sequence") >= 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void testInlineTable() {
|
public void testInlineTable() {
|
||||||
String s = "A = {g=10}\n"+
|
String s = "A = {g=10}\n"+
|
||||||
"print( A )\n";
|
"print( A )\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user