diff options
-rw-r--r-- | sql/item.cc | 16 | ||||
-rw-r--r-- | sql/item.h | 15 |
2 files changed, 17 insertions, 14 deletions
diff --git a/sql/item.cc b/sql/item.cc index 69b1b78a961..182aef4c94c 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -297,6 +297,22 @@ longlong Item::val_int_from_decimal() } +void *Item::operator new(size_t size, Item *reuse, uint *rsize) +{ + if (reuse && size <= reuse->rsize) + { + reuse->cleanup(); + TRASH((void *)reuse, size); + if (rsize) + (*rsize)= reuse->rsize; + return (void *)reuse; + } + if (rsize) + (*rsize)= size; + return (void *)sql_alloc((uint)size); +} + + Item::Item(): rsize(0), name(0), orig_name(0), name_length(0), fixed(0), collation(&my_charset_bin, DERIVATION_COERCIBLE) diff --git a/sql/item.h b/sql/item.h index f8fe05cfdb2..18b419dd6d5 100644 --- a/sql/item.h +++ b/sql/item.h @@ -233,20 +233,7 @@ public: static void *operator new(size_t size, MEM_ROOT *mem_root) { return (void*) alloc_root(mem_root, (uint) size); } /* Special for SP local variable assignment - reusing slots */ - static void *operator new(size_t size, Item *reuse, uint *rsize) - { - if (reuse && size <= reuse->rsize) - { - reuse->cleanup(); - TRASH((void *)reuse, size); - if (rsize) - (*rsize)= reuse->rsize; - return (void *)reuse; - } - if (rsize) - (*rsize)= size; - return (void *)sql_alloc((uint)size); - } + static void *operator new(size_t size, Item *reuse, uint *rsize); static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); } static void operator delete(void *ptr, MEM_ROOT *mem_root) {} |