diff options
author | ram@ram.(none) <> | 2002-08-10 15:13:05 +0500 |
---|---|---|
committer | ram@ram.(none) <> | 2002-08-10 15:13:05 +0500 |
commit | deaec7b0e05afe21580b1c9190fa83e6c5920f4e (patch) | |
tree | 104845d651db094413f7bcb3ef799caeccc31075 /sql | |
parent | 8f7f648d8d55f87159abd95aa2ebbae0b53c3025 (diff) | |
download | mariadb-git-deaec7b0e05afe21580b1c9190fa83e6c5920f4e.tar.gz |
QUOTE() code cleanup
Diffstat (limited to 'sql')
-rw-r--r-- | sql/item_strfunc.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 540026ed680..7b28a9d4550 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2071,13 +2071,15 @@ String* Item_func_inet_ntoa::val_str(String* str) return str; } +#define get_esc_bit(mask, num) (1 & (*((mask) + ((num) >> 3))) >> ((num) & 7)) + /* QUOTE() function returns argument string in single quotes, also adds a \ before \, ' CHAR(0) and CHAR(24) */ String *Item_func_quote::val_str(String *str) { - static char escmask[64] = {0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, + static char escmask[32] = {0x01, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; @@ -2089,10 +2091,8 @@ String *Item_func_quote::val_str(String *str) goto null; for (from= (char*) arg->ptr(), end= from + arg->length(); from < end; from++) - { - if (*(escmask + (*from >> 3)) and (1 << (*from & 7))) - delta++; - } + delta+= get_esc_bit(escmask, *from); + if (str->alloc(arg->length() + delta)) goto null; to= (char*) str->ptr() + arg->length() + delta - 1; @@ -2101,7 +2101,7 @@ String *Item_func_quote::val_str(String *str) from--, to--) { *to= *from; - if (*(escmask + (*from >> 3)) and (1 << (*from & 7))) + if (get_esc_bit(escmask, *from)) *--to= '\\'; } *to= '\''; |