Version 0.9.11 (????-??-??)
---------------------------
+- Fixed #1313083 -e (EBCDIC cross compile) broken.
- Fixed #1297658 underestimation of n in YYFILL(n).
- Applied #1339483 Avoid rebuilds of re2c when running subtargets.
- Implemented #1335305 symbol table reimplementation, just slightly modifed.
Range * Scanner::getRange(SubStr &s) const
{
- uchar lb = unescape(s), ub;
+ uint lb = unescape(s), ub, xlb, xub, c;
if (s.len < 2 || *s.str != '-')
{
if (ub < lb)
{
- uchar tmp;
- tmp = lb;
+ uint tmp = lb;
lb = ub;
ub = tmp;
}
+
+ xlb = xlat[lb];
+ xub = xlat[ub];
+
+ for(c = lb; c <= ub; c++)
+ {
+ if (!(xlb <= xlat[c] && xlat[c] <= ub))
+ {
+ /* range doesn't work */
+ Range * r = new Range(xlb, xlb + 1);
+ for (c = lb + 1; c <= ub; c++)
+ {
+ r = doUnion(r, new Range(xlat[c], xlat[c] + 1));
+ }
+ return r;
+ }
+ }
+
+ lb = xlb;
+ ub = xub;
}
return new Range(lb, ub + 1);