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;