summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2019-07-08 08:53:13 -0700
committerAnel Husakovic <anel@mariadb.org>2019-07-08 08:53:29 -0700
commit74ce7e422f4453f2f525b11afce090f3b74b845a (patch)
treeccedaba1e15e34744e32f72ff4f9dff8d728aa7a
parentbe27d4557c9d2e51ee7ddbb4e64b6cc165263285 (diff)
downloadmariadb-git-74ce7e422f4453f2f525b11afce090f3b74b845a.tar.gz
Memory leaks-no,no
-rw-r--r--sql/mysql_json.cc15
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);