|
|
@@ -726,20 +726,19 @@ static void LJ_FASTCALL recff_string_range(jit_State *J, RecordFFData *rd)
|
|
|
end = argv2int(J, &rd->argv[2]);
|
|
|
}
|
|
|
} else { /* string.byte(str, [,start [,end]]) */
|
|
|
- if (!tref_isnil(J->base[1])) {
|
|
|
+ if (tref_isnil(J->base[1])) {
|
|
|
+ start = 1;
|
|
|
+ trstart = lj_ir_kint(J, 1);
|
|
|
+ } else {
|
|
|
start = argv2int(J, &rd->argv[1]);
|
|
|
trstart = lj_opt_narrow_toint(J, J->base[1]);
|
|
|
- trend = J->base[2];
|
|
|
- if (tref_isnil(trend)) {
|
|
|
- trend = trstart;
|
|
|
- end = start;
|
|
|
- } else {
|
|
|
- trend = lj_opt_narrow_toint(J, trend);
|
|
|
- end = argv2int(J, &rd->argv[2]);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (J->base[1] && !tref_isnil(J->base[2])) {
|
|
|
+ trend = lj_opt_narrow_toint(J, J->base[2]);
|
|
|
+ end = argv2int(J, &rd->argv[2]);
|
|
|
} else {
|
|
|
- trend = trstart = lj_ir_kint(J, 1);
|
|
|
- end = start = 1;
|
|
|
+ trend = trstart;
|
|
|
+ end = start;
|
|
|
}
|
|
|
}
|
|
|
if (end < 0) {
|