fix time convert asan core
This commit is contained in:
12
deps/oblib/src/lib/timezone/ob_time_convert.cpp
vendored
12
deps/oblib/src/lib/timezone/ob_time_convert.cpp
vendored
@ -860,7 +860,7 @@ int ObTimeConverter::str_to_year(const ObString &str, uint8_t &value)
|
|||||||
const char *pos = str.ptr();
|
const char *pos = str.ptr();
|
||||||
const char *end = pos + str.length();
|
const char *end = pos + str.length();
|
||||||
ObTimeDigits digits;
|
ObTimeDigits digits;
|
||||||
for (; !isdigit(*pos) && pos < end; ++pos) {}
|
for (; pos < end && !isdigit(*pos); ++pos) {}
|
||||||
if (OB_FAIL(get_datetime_digits(pos, end, INT32_MAX, digits))) {
|
if (OB_FAIL(get_datetime_digits(pos, end, INT32_MAX, digits))) {
|
||||||
LOG_WARN("failed to get digits from year string", K(ret));
|
LOG_WARN("failed to get digits from year string", K(ret));
|
||||||
} else {
|
} else {
|
||||||
@ -1854,12 +1854,12 @@ int ObTimeConverter::str_to_digit_with_date(const ObString &str, ObTimeDigits *d
|
|||||||
const int32_t *expect_lens = NULL;
|
const int32_t *expect_lens = NULL;
|
||||||
ObTimeDelims delims[DATETIME_PART_CNT];
|
ObTimeDelims delims[DATETIME_PART_CNT];
|
||||||
// find first digit and delimiter.
|
// find first digit and delimiter.
|
||||||
for (; isspace(*pos) && pos < end; ++pos) {}
|
for (; pos < end && isspace(*pos); ++pos) {}
|
||||||
if (!isdigit(*pos)) {
|
if (!isdigit(*pos)) {
|
||||||
ret = OB_INVALID_DATE_FORMAT;
|
ret = OB_INVALID_DATE_FORMAT;
|
||||||
} else {
|
} else {
|
||||||
const char *first_digit = pos;
|
const char *first_digit = pos;
|
||||||
for (; isdigit(*pos) && pos < end; ++pos) {}
|
for (; pos < end && isdigit(*pos); ++pos) {}
|
||||||
const char *first_delim = pos;
|
const char *first_delim = pos;
|
||||||
// year is separated by delimiter, or 4 digits, or 2?
|
// year is separated by delimiter, or 4 digits, or 2?
|
||||||
/*if (HAS_TYPE_ORACLE(ob_time.mode_)) {
|
/*if (HAS_TYPE_ORACLE(ob_time.mode_)) {
|
||||||
@ -2011,7 +2011,7 @@ int ObTimeConverter::str_to_ob_time_without_date(const ObString &str, ObTime &ob
|
|||||||
const char *pos = str.ptr();
|
const char *pos = str.ptr();
|
||||||
const char *end = pos + str.length();
|
const char *end = pos + str.length();
|
||||||
// find first digit.
|
// find first digit.
|
||||||
for (; isspace(*pos) && pos < end; ++pos) {}
|
for (; pos < end && isspace(*pos); ++pos) {}
|
||||||
const char *first_digit = pos;
|
const char *first_digit = pos;
|
||||||
if (!('-' == *pos || isdigit(*pos))) {
|
if (!('-' == *pos || isdigit(*pos))) {
|
||||||
for (int i = 0; OB_SUCC(ret) && i < TOTAL_PART_CNT; ++i) {
|
for (int i = 0; OB_SUCC(ret) && i < TOTAL_PART_CNT; ++i) {
|
||||||
@ -2163,9 +2163,9 @@ int ObTimeConverter::str_to_ob_time_format(const ObString &str, const ObString &
|
|||||||
*scale = 0;
|
*scale = 0;
|
||||||
}
|
}
|
||||||
while (OB_SUCC(ret) && fmt_pos < fmt_end) {
|
while (OB_SUCC(ret) && fmt_pos < fmt_end) {
|
||||||
for (; isspace(*fmt_pos) && fmt_pos < fmt_end; ++fmt_pos)
|
for (; fmt_pos < fmt_end && isspace(*fmt_pos); ++fmt_pos)
|
||||||
;
|
;
|
||||||
for (; isspace(*str_pos) && str_pos < str_end; ++str_pos)
|
for (; str_pos < str_end && isspace(*str_pos); ++str_pos)
|
||||||
;
|
;
|
||||||
if (fmt_pos == fmt_end || str_pos == str_end) {
|
if (fmt_pos == fmt_end || str_pos == str_end) {
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user