Mercurial > vim
comparison src/regexp_nfa.c @ 4482:cd005ab15ef3 v7.3.989
updated for version 7.3.989
Problem: New regexp engine compares negative numbers to character.
Solution: Add missing case statements.
author | Bram Moolenaar <bram@vim.org> |
---|---|
date | Tue, 21 May 2013 15:33:41 +0200 |
parents | 035fb0d5e7ce |
children | 9a1d78f82826 |
comparison
equal
deleted
inserted
replaced
4481:407cdb221614 | 4482:cd005ab15ef3 |
---|---|
3381 case NFA_NUPPER: /* \U */ | 3381 case NFA_NUPPER: /* \U */ |
3382 result = c != NUL && !ri_upper(c); | 3382 result = c != NUL && !ri_upper(c); |
3383 ADD_POS_NEG_STATE(t->state); | 3383 ADD_POS_NEG_STATE(t->state); |
3384 break; | 3384 break; |
3385 | 3385 |
3386 case NFA_MOPEN + 0: | |
3387 case NFA_MOPEN + 1: | |
3388 case NFA_MOPEN + 2: | |
3389 case NFA_MOPEN + 3: | |
3390 case NFA_MOPEN + 4: | |
3391 case NFA_MOPEN + 5: | |
3392 case NFA_MOPEN + 6: | |
3393 case NFA_MOPEN + 7: | |
3394 case NFA_MOPEN + 8: | |
3395 case NFA_MOPEN + 9: | |
3396 /* handled below */ | |
3397 break; | |
3398 | |
3399 case NFA_SKIP_CHAR: | |
3400 case NFA_ZSTART: | |
3401 /* TODO: should not happen? */ | |
3402 break; | |
3403 | |
3386 default: /* regular character */ | 3404 default: /* regular character */ |
3405 /* TODO: put this in #ifdef later */ | |
3406 if (t->state->c < -256) | |
3407 EMSGN("INTERNAL: Negative state char: %ld", t->state->c); | |
3387 result = (no_Magic(t->state->c) == c); | 3408 result = (no_Magic(t->state->c) == c); |
3409 | |
3388 if (!result) | 3410 if (!result) |
3389 result = ireg_ic == TRUE | 3411 result = ireg_ic == TRUE |
3390 && MB_TOLOWER(t->state->c) == MB_TOLOWER(c); | 3412 && MB_TOLOWER(t->state->c) == MB_TOLOWER(c); |
3391 ADD_POS_NEG_STATE(t->state); | 3413 ADD_POS_NEG_STATE(t->state); |
3392 break; | 3414 break; |