diff options
author | Anel Husakovic <anel@mariadb.org> | 2019-07-08 08:53:13 -0700 |
---|---|---|
committer | Anel Husakovic <anel@mariadb.org> | 2019-07-08 08:53:29 -0700 |
commit | 74ce7e422f4453f2f525b11afce090f3b74b845a (patch) | |
tree | ccedaba1e15e34744e32f72ff4f9dff8d728aa7a | |
parent | be27d4557c9d2e51ee7ddbb4e64b6cc165263285 (diff) | |
download | mariadb-git-74ce7e422f4453f2f525b11afce090f3b74b845a.tar.gz |
Memory leaks-no,no
-rw-r--r-- | sql/mysql_json.cc | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/sql/mysql_json.cc b/sql/mysql_json.cc index 27f1c9e59b2..34ab6db41cc 100644 --- a/sql/mysql_json.cc +++ b/sql/mysql_json.cc @@ -137,17 +137,19 @@ bool parse_array_or_object(String *buffer,Field_mysql_json::enum_type t, if(buffer->append('"')) { + delete[] key_element; return true; } if( buffer->append(String((const char *)key_element, &my_charset_bin)) ) { + delete[] key_element; return true; } + delete[] key_element; if(buffer->append('"')) { return true; } - delete[] key_element; if(buffer->append(":")) { return true; @@ -375,6 +377,7 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, value_element[num_bytes+1]= '\0'; if( buffer->append_longlong(sint4korr(value_element))) { + delete[] value_element; return true; } delete[] value_element; @@ -391,6 +394,7 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, value_element[num_bytes+1]= '\0'; if( buffer->append_longlong(sint8korr(value_element))) { + delete[] value_element; return true; } delete[] value_element; @@ -427,6 +431,7 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, value_element[num_bytes+1]= '\0'; if( buffer->append_ulonglong(uint8korr(value_element))) { + delete[] value_element; return true; } delete[] value_element; @@ -465,17 +470,19 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, if(buffer->append('"')) { + delete[] value_element; return true; } if( buffer->append(String((const char *)value_element, &my_charset_bin))) { + delete[] value_element; return true; } + delete[] value_element; if(buffer->append('"')) { return true; } - delete[] value_element; break; } @@ -502,14 +509,12 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, case MYSQL_TYPE_TIME: { TIME_from_longlong_time_packed(&t, sint8korr(value_element)); - delete[] value_element; break; } case MYSQL_TYPE_DATE: { //TIME_from_longlong_date_packed(ltime, packed_value); //not defined in sql/compat56.h TIME_from_longlong_datetime_packed(&t, sint8korr(value_element)); - delete[] value_element; t.time_type= MYSQL_TIMESTAMP_DATE; break; } @@ -517,7 +522,6 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, case MYSQL_TYPE_TIMESTAMP: { TIME_from_longlong_datetime_packed(&t, sint8korr(value_element)); - delete[] value_element; break; } case MYSQL_TYPE_NEWDECIMAL: @@ -545,6 +549,7 @@ bool parse_mysql_scalar(String* buffer, size_t value_json_type, default: return false; } + delete[] value_element; // This part is common to datetime/date/timestamp char *ptr= const_cast<char *>(buffer->ptr())+buffer->length(); const int size= my_TIME_to_str(&t, ptr, 6); |