Lua 5.2 compatibility fixes.
This commit is contained in:
@@ -357,9 +357,9 @@ public class LexState {
|
|||||||
while ( s < c.length && isspace(c[s]))
|
while ( s < c.length && isspace(c[s]))
|
||||||
++s;
|
++s;
|
||||||
// Check for negative sign
|
// Check for negative sign
|
||||||
boolean neg = false;
|
double sgn = 1.0;
|
||||||
if (s < c.length && c[s] == '-') {
|
if (s < c.length && c[s] == '-') {
|
||||||
neg = true;
|
sgn = -1.0;
|
||||||
++s;
|
++s;
|
||||||
}
|
}
|
||||||
/* Check for "0x" */
|
/* Check for "0x" */
|
||||||
@@ -372,14 +372,14 @@ public class LexState {
|
|||||||
++s;
|
++s;
|
||||||
|
|
||||||
// read integer part.
|
// read integer part.
|
||||||
long m = 0;
|
double m = 0;
|
||||||
int e = 0;
|
int e = 0;
|
||||||
while (s < c.length && isxdigit(c[s]))
|
while (s < c.length && isxdigit(c[s]))
|
||||||
m = (m << 4) + hexvalue(c[s++]);
|
m = (m * 16) + hexvalue(c[s++]);
|
||||||
if (s < c.length && c[s] == '.') {
|
if (s < c.length && c[s] == '.') {
|
||||||
++s; // skip dot
|
++s; // skip dot
|
||||||
while (s < c.length && isxdigit(c[s])) {
|
while (s < c.length && isxdigit(c[s])) {
|
||||||
m = (m << 4) + hexvalue(c[s++]);
|
m = (m * 16) + hexvalue(c[s++]);
|
||||||
e -= 4; // Each fractional part shifts right by 2^4
|
e -= 4; // Each fractional part shifts right by 2^4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -397,7 +397,7 @@ public class LexState {
|
|||||||
exp1 = -exp1;
|
exp1 = -exp1;
|
||||||
e += exp1;
|
e += exp1;
|
||||||
}
|
}
|
||||||
return e == 0 ? LuaValue.valueOf(m): LuaValue.valueOf(m * Math.pow(2.0, e));
|
return LuaValue.valueOf(sgn * m * Math.pow(2.0, e));
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean str2d(String str, SemInfo seminfo) {
|
boolean str2d(String str, SemInfo seminfo) {
|
||||||
|
|||||||
Reference in New Issue
Block a user