Commit faf4d99d authored by Sergei Golubchik's avatar Sergei Golubchik

String::append_for_single_quote() should signal OOM condition,

just like other String::append() methods do
parent 4b169cd7
......@@ -1079,7 +1079,8 @@ well_formed_copy_nchars(CHARSET_INFO *to_cs,
characters as necessary.
Does not add the enclosing quotes, this is left up to caller.
*/
void String::append_for_single_quote(const char *st, uint len)
#define APPEND(X) if (append(X)) return 1; else break
bool String::append_for_single_quote(const char *st, uint len)
{
const char *end= st+len;
for (; st < end; st++)
......@@ -1087,28 +1088,16 @@ void String::append_for_single_quote(const char *st, uint len)
uchar c= *st;
switch (c)
{
case '\\':
append(STRING_WITH_LEN("\\\\"));
break;
case '\0':
append(STRING_WITH_LEN("\\0"));
break;
case '\'':
append(STRING_WITH_LEN("\\'"));
break;
case '\n':
append(STRING_WITH_LEN("\\n"));
break;
case '\r':
append(STRING_WITH_LEN("\\r"));
break;
case '\032': // Ctrl-Z
append(STRING_WITH_LEN("\\Z"));
break;
default:
append(c);
case '\\': APPEND(STRING_WITH_LEN("\\\\"));
case '\0': APPEND(STRING_WITH_LEN("\\0"));
case '\'': APPEND(STRING_WITH_LEN("\\'"));
case '\n': APPEND(STRING_WITH_LEN("\\n"));
case '\r': APPEND(STRING_WITH_LEN("\\r"));
case '\032': APPEND(STRING_WITH_LEN("\\Z"));
default: APPEND(c);
}
}
return 0;
}
void String::print(String *str)
......
......@@ -476,7 +476,7 @@ class String
return FALSE;
}
void print(String *print);
void append_for_single_quote(const char *st, uint len);
bool append_for_single_quote(const char *st, uint len);
/* Swap two string objects. Efficient way to exchange data without memcpy. */
void swap(String &s);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment