mdbx-load: fix backslash escaping (for compatibility with ITS#9068).

In fact MDBX not affected by this bug, since a very long time mdbx_dump was fixed to not produce a problematic sequence of backslash.

For compatibility with LMDB after http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=commit;h=5c012bbe033f9bbb273078b07dded59f080d348d

Change-Id: I8ff8e003ae29504605402b937becd4fb37120408
This commit is contained in:
Leonid Yuriev 2019-08-27 14:50:19 +03:00
parent b3a9b3ca1a
commit 8329f5b6a1

View File

@ -266,10 +266,9 @@ static int readline(MDBX_val *out, MDBX_val *buf) {
if (mode & PRINT) {
while (c2 < end) {
if (*c2 == '\\') {
if (unlikely(*c2 == '\\')) {
if (c2[1] == '\\') {
c1++;
c2 += 2;
*c1++ = '\\';
} else {
if (c2 + 3 > end || !isxdigit(c2[1]) || !isxdigit(c2[2])) {
Eof = 1;
@ -277,8 +276,8 @@ static int readline(MDBX_val *out, MDBX_val *buf) {
return EOF;
}
*c1++ = (char)unhex(++c2);
c2 += 2;
}
c2 += 2;
} else {
/* copies are redundant when no escapes were used */
*c1++ = *c2++;