diff options
Diffstat (limited to 'src/backend/regex/regc_lex.c')
-rw-r--r-- | src/backend/regex/regc_lex.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/backend/regex/regc_lex.c b/src/backend/regex/regc_lex.c index 6f2c0cb3eb4..f6ed9f09ea4 100644 --- a/src/backend/regex/regc_lex.c +++ b/src/backend/regex/regc_lex.c @@ -860,6 +860,12 @@ lexescape(struct vars * v) c = lexdigits(v, 8, 1, 3); if (ISERR()) FAILW(REG_EESCAPE); + if (c > 0xff) + { + /* out of range, so we handled one digit too much */ + v->now--; + c >>= 3; + } RETV(PLAIN, c); break; default: |