344 |
|
|
345 |
if (rc == 0) rc = nmatch; /* All captured slots were filled in */ |
if (rc == 0) rc = nmatch; /* All captured slots were filled in */ |
346 |
|
|
347 |
|
/* Successful match */ |
348 |
|
|
349 |
if (rc >= 0) |
if (rc >= 0) |
350 |
{ |
{ |
351 |
size_t i; |
size_t i; |
362 |
return 0; |
return 0; |
363 |
} |
} |
364 |
|
|
365 |
else |
/* Unsuccessful match */ |
366 |
|
|
367 |
|
if (allocated_ovector) free(ovector); |
368 |
|
switch(rc) |
369 |
{ |
{ |
370 |
if (allocated_ovector) free(ovector); |
/* ========================================================================== */ |
371 |
switch(rc) |
/* These cases are never obeyed. This is a fudge that causes a compile-time |
372 |
{ |
error if the vector eint, which is indexed by compile-time error number, is |
373 |
case PCRE_ERROR_NOMATCH: return REG_NOMATCH; |
not the correct length. It seems to be the only way to do such a check at |
374 |
case PCRE_ERROR_NULL: return REG_INVARG; |
compile time, as the sizeof() operator does not work in the C preprocessor. |
375 |
case PCRE_ERROR_BADOPTION: return REG_INVARG; |
As all the PCRE_ERROR_xxx values are negative, we can use 0 and 1. */ |
376 |
case PCRE_ERROR_BADMAGIC: return REG_INVARG; |
|
377 |
case PCRE_ERROR_UNKNOWN_NODE: return REG_ASSERT; |
case 0: |
378 |
case PCRE_ERROR_NOMEMORY: return REG_ESPACE; |
case (sizeof(eint)/sizeof(int) == ERRCOUNT): |
379 |
case PCRE_ERROR_MATCHLIMIT: return REG_ESPACE; |
return REG_ASSERT; |
380 |
case PCRE_ERROR_BADUTF8: return REG_INVARG; |
/* ========================================================================== */ |
381 |
case PCRE_ERROR_BADUTF8_OFFSET: return REG_INVARG; |
|
382 |
default: return REG_ASSERT; |
case PCRE_ERROR_NOMATCH: return REG_NOMATCH; |
383 |
} |
case PCRE_ERROR_NULL: return REG_INVARG; |
384 |
|
case PCRE_ERROR_BADOPTION: return REG_INVARG; |
385 |
|
case PCRE_ERROR_BADMAGIC: return REG_INVARG; |
386 |
|
case PCRE_ERROR_UNKNOWN_NODE: return REG_ASSERT; |
387 |
|
case PCRE_ERROR_NOMEMORY: return REG_ESPACE; |
388 |
|
case PCRE_ERROR_MATCHLIMIT: return REG_ESPACE; |
389 |
|
case PCRE_ERROR_BADUTF8: return REG_INVARG; |
390 |
|
case PCRE_ERROR_BADUTF8_OFFSET: return REG_INVARG; |
391 |
|
default: return REG_ASSERT; |
392 |
} |
} |
393 |
} |
} |
394 |
|
|