From c60cc58da2cddada738e88911685dddf9ee8c041 Mon Sep 17 00:00:00 2001 From: obdev Date: Mon, 7 Aug 2023 07:18:34 +0000 Subject: [PATCH] [GIS]fix SRSWKTParser memory leak --- deps/oblib/src/lib/geo/ob_srs_wkt_parser.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/deps/oblib/src/lib/geo/ob_srs_wkt_parser.cpp b/deps/oblib/src/lib/geo/ob_srs_wkt_parser.cpp index e3e21ad0d..b9215c7c6 100644 --- a/deps/oblib/src/lib/geo/ob_srs_wkt_parser.cpp +++ b/deps/oblib/src/lib/geo/ob_srs_wkt_parser.cpp @@ -318,7 +318,7 @@ static int parse_coordinate_system(common::ObIAllocator &allocator, const common char l_brac = r_brac == ')' ? '(' : '['; const char *begin = srs_str.ptr(); const char *end = begin + last + 1; // past the last - void *buf = allocator.alloc(sizeof(SrsWktGrammar)); + void *buf = tmp_alloc.alloc(sizeof(SrsWktGrammar)); if (OB_ISNULL(buf)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("alloc SrsWktGrammar failed", K(ret)); @@ -334,6 +334,9 @@ static int parse_coordinate_system(common::ObIAllocator &allocator, const common ObString trailing_str(end - begin, begin); LOG_WARN("failed to parse coodinate sytem, has extra trailing characters", K(trailing_str)); } + if (OB_NOT_NULL(parser)) { + parser->~SrsWktGrammar(); + } } } return ret;