rangeStart = localMax;
rangeStart = (REchar)localMax;
static REbool calculateBitmapSize(REParseState *pState, RENode *target){    REchar rangeStart;    const REchar *src = (const REchar *)(target->child);    const REchar *end = target->data.chclass.end;    REchar c;    REuint32 nDigits;    REuint32 i;    REuint32 max = 0;    bool inRange = false;    CharSet *charSet = (CharSet *)malloc(sizeof(CharSet));    if (!charSet) return false;    target->data.chclass.charSet = charSet;    charSet->length = 0;    charSet->bits = NULL;    if (src == end)        return true;    if (*src == '^')        ++src;        while (src != end) {        REuint32 localMax = 0;        switch (*src) {        case '\\':            ++src;            c = *src++;            switch (c) {            case 'b':                localMax = 0x8;                break;            case 'f':                localMax = 0xC;                break;            case 'n':                localMax = 0xA;                break;            case 'r':                localMax = 0xD;                break;            case 't':                localMax = 0x9;                break;            case 'v':                localMax = 0xB;                break;            case 'c':                if (((src + 1) < end) && RE_ISLETTER(src[1]))                    localMax = (REchar)(*src++ & 0x1F);                else                    localMax = '\\';                break;            case 'x':                nDigits = 2;                goto lexHex;            case 'u':                nDigits = 4;lexHex:                {                    REuint32 n = 0;                    for (i = 0; (i < nDigits) && (src < end); i++) {                        REuint32 digit;                        c = *src++;                        if (!isASCIIHexDigit(c, &digit)) {                            /* back off to accepting the original                              *'\' as a literal                              */                            src -= (i + 1);                            n = '\\';                            break;                        }                        n = (n << 4) | digit;                    }                    localMax = n;                }                break;            case 'd':                if (inRange) {                    reportRegExpError(&pState->error, WRONG_RANGE);                    return false;                }                localMax = '9';                break;            case 'D':            case 's':            case 'S':            case 'w':            case 'W':                if (inRange) {                    reportRegExpError(&pState->error, WRONG_RANGE);                    return false;                }                charSet->length = 65536;                return true;            default:                localMax = c;                break;            }            break;        default:            localMax = *src++;            break;        }        if (inRange) {            if (rangeStart > localMax) {                reportRegExpError(&pState->error, WRONG_RANGE);                return false;            }            inRange = false;        }        else {            if (src < (end - 1)) {                if (*src == '-') {                    ++src;                    inRange = true;                    rangeStart = localMax;                    continue;                }            }        }        if (pState->flags & IGNORECASE) {            c = canonicalize(localMax);            if (c > localMax)                localMax = c;        }        if (localMax > max)            max = localMax;    }    charSet->length = max + 1;    return true;}