char is distinct from signed char and unsigned char.
Change-Id: I13f226d8192e3e9baafb4efa3c584c185c30f6f7
Reviewed-on: https://code-review.googlesource.com/5330
Reviewed-by: Paul Wankadia <junyer@google.com>
diff --git a/re2/re2.cc b/re2/re2.cc
index 6bc5edd..d75e109 100644
--- a/re2/re2.cc
+++ b/re2/re2.cc
@@ -962,6 +962,13 @@
return true;
}
+bool RE2::Arg::parse_schar(const char* str, int n, void* dest) {
+ if (n != 1) return false;
+ if (dest == NULL) return true;
+ *(reinterpret_cast<signed char*>(dest)) = str[0];
+ return true;
+}
+
bool RE2::Arg::parse_uchar(const char* str, int n, void* dest) {
if (n != 1) return false;
if (dest == NULL) return true;
diff --git a/re2/re2.h b/re2/re2.h
index 99502ac..4418492 100644
--- a/re2/re2.h
+++ b/re2/re2.h
@@ -789,7 +789,7 @@
MAKE_PARSER(char, parse_char);
- MAKE_PARSER(signed char, parse_char);
+ MAKE_PARSER(signed char, parse_schar);
MAKE_PARSER(unsigned char, parse_uchar);
MAKE_PARSER(short, parse_short);
MAKE_PARSER(unsigned short, parse_ushort);
@@ -823,6 +823,7 @@
static bool parse_null (const char* str, int n, void* dest);
static bool parse_char (const char* str, int n, void* dest);
+ static bool parse_schar (const char* str, int n, void* dest);
static bool parse_uchar (const char* str, int n, void* dest);
static bool parse_float (const char* str, int n, void* dest);
static bool parse_double (const char* str, int n, void* dest);